Cómo siempre, para añadir nuevas rutas, se deben añadir con los correspondientes métodos al config/routes.rb. En el caso de Spree estas rutas no deben dibujarse en Rails.application.routes si no que en Spree::Core:Engine.routes; así, para añadir un modelo CRUD al panel de administrador de la plataforma:

Spree::Core::Engine.routes.draw do
  namespace :admin do
    resources :items
  end
end

Al añadir rutas, se crearán paths dentro del namespace señalado de esta forma:

spree  / Spree::Core::Engine

Routes for Spree::Core::Engine:
                                      admin_items GET    /admin/items(.:format)                                                      spree/admin/items#index
                                                  POST   /admin/items(.:format)                                                      spree/admin/items#create
                                   new_admin_item GET    /admin/items/new(.:format)                                                  spree/admin/items#new
                                  edit_admin_item GET    /admin/items/:id/edit(.:format)                                             spree/admin/items#edit
                                       admin_item GET    /admin/items/:id(.:format)                                                  spree/admin/items#show
                                                  PATCH  /admin/items/:id(.:format)                                                  spree/admin/items#update
                                                  PUT    /admin/items/:id(.:format)                                                  spree/admin/items#update
                                                  DELETE /admin/items/:id(.:format)                                                  spree/admin/items#destroy

A pesar de esto, al intentar testear cualquier elemento que contenga rutas con RSpec, los test arrojarán undefined method some_new_path - véase ejemplo aquí -.

Esto se debe a que estas rutas están dibujadas dentro de Spree y no dentro de Application::Routes por lo cual deben ser llamadas usando el prefijo spree., por ejemplo en una vista:

<%= link_to 'Show', spree.admin_items_path(@item), class: "button" %>
<%= link_to 'Back', spree.admin_items_path, class: "button" %>

y en un controlador:

if @item.save
  redirect_to spree.admin_items_url, notice: 'Item was successfully updated.'
else
  render action: 'new'
end

Para los test de routing, también encontramos el mismo problema, que puede ser fácilmente sorteado al añadir esta línea tras el describe "routing" do:

routes { Spree::Core::Engine.routes }
[HOW-TO] Install Android KitKat (4.4) on the Moto X (XT1058) with locked bootloader My 1st month with TDD or "Why TDD is a pain in the ass but you should learn and use it anyway"