The Depot Application

The Depot Application

21.2 Routing Requests 21 Action Controller: Routing and URLs

21.2 Routing Requests

ls app/controllers/*_controller.rb
app/controllers/admin_controller.rb
app/controllers/application_controller.rb
app/controllers/info_controller.rb
app/controllers/line_items_controller.rb
app/controllers/orders_controller.rb
app/controllers/products_controller.rb
app/controllers/store_controller.rb
app/controllers/users_controller.rb
irb e1/routing/config2/routes_for_depot.rb
>> require "./config/environment.rb"
=> true
 
>> ActionController::Base.session_store = nil
=> nil
>> ActionController::Routing.use_controllers! ["store", "admin", "coupon"]
=> ["store", "admin", "coupon"]
>> load "config/routes.rb"
=> []
>> rs = ActionController::Routing::Routes
=> #<ActionController::Routing::RouteSet:0xb7454180 @builder=#<ActionController::Routing::RouteBuilder:0xb72c5a58 @optional_separators=["/"], @interval_regexp=/(.*?)((?-mix:[\/\.\?])|$)/, @separators=["/", ".", "?"], @nonseparator_regexp=/\A([^\/\.\?]+)/, @separator_regexp=/[\/\.\?]/>, @configuration_files=["/home/rubys/git/awdwr/work-235/depot/config/routes.rb"], @routes_last_modified=Mon Mar 01 09:11:45 -0500 2010, @routes_by_controller=nil, @named_routes=#<ActionController::Routing::RouteSet::NamedRouteCollection:0xb74461fc @helpers=[:hash_for_users_path, :users_path, :hash_for_users_url, :users_url, :hash_for_new_user_path, :new_user_path, :hash_for_new_user_url, :new_user_url, :hash_for_edit_user_path, :edit_user_path, :hash_for_edit_user_url, :edit_user_url, :hash_for_user_path, :user_path, :hash_for_user_url, :user_url, :hash_for_line_items_path, :line_items_path, :hash_for_line_items_url, :line_items_url, :hash_for_new_line_item_path, :new_line_item_path, :hash_for_new_line_item_url, :new_line_item_url, :hash_for_edit_line_item_path, :edit_line_item_path, :hash_for_edit_line_item_url, :edit_line_item_url, :hash_for_line_item_path, :line_item_path, :hash_for_line_item_url, :line_item_url, :hash_for_orders_path, :orders_path, :hash_for_orders_url, :orders_url, :hash_for_new_order_path, :new_order_path, :hash_for_new_order_url, :new_order_url, :hash_for_edit_order_path, :edit_order_path, :hash_for_edit_order_url, :edit_order_url, :hash_for_order_path, :order_path, :hash_for_order_url, :order_url, :hash_for_products_path, :products_path, :hash_for_products_url, :products_url, :hash_for_new_product_path, :new_product_path, :hash_for_new_product_url, :new_product_url, :hash_for_edit_product_path, :edit_product_path, :hash_for_edit_product_url, :edit_product_url, :hash_for_product_path, :product_path, :hash_for_product_url, :product_url], @module=#<Module:0xb74460bc>, @routes={:edit_product=>#<ActionController::Routing::Route:0xb7960c78 @conditions={:method=>:get}, @action_requirement="edit", @defaults={:action=>"edit", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7961ac4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7961a24 @is_optional=false, @value="products">, #<ActionController::Routing::DividerSegment:0xb7961970 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb79618d0 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb796181c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb796177c @is_optional=false, @value="edit">, #<ActionController::Routing::OptionalFormatSegment:0xb7961704 @key=:format, @is_optional=true>], @parameter_shell={:action=>"edit", :controller=>"products"}, @to_s="GET    /products/:id/edit(.:format)?            {:action=>\"edit\", :controller=>\"products\"}", @optimise=false, @requirements={:action=>"edit", :controller=>"products"}>, :new_order=>#<ActionController::Routing::Route:0xb79ec958 @conditions={:method=>:get}, @action_requirement="new", @defaults={:action=>"new", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb79ed6b4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79ed5ec @is_optional=false, @value="orders">, #<ActionController::Routing::DividerSegment:0xb79ed4e8 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79ed420 @is_optional=false, @value="new">, #<ActionController::Routing::OptionalFormatSegment:0xb79ed3a8 @key=:format, @is_optional=true>], @parameter_shell={:action=>"new", :controller=>"orders"}, @to_s="GET    /orders/new(.:format)?                   {:action=>\"new\", :controller=>\"orders\"}", @optimise=true, @requirements={:action=>"new", :controller=>"orders"}>, :new_line_item=>#<ActionController::Routing::Route:0xb7285d04 @conditions={:method=>:get}, @action_requirement="new", @defaults={:action=>"new", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7286380 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72862e0 @is_optional=false, @value="line_items">, #<ActionController::Routing::DividerSegment:0xb728622c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb728618c @is_optional=false, @value="new">, #<ActionController::Routing::OptionalFormatSegment:0xb7286114 @key=:format, @is_optional=true>], @parameter_shell={:action=>"new", :controller=>"line_items"}, @to_s="GET    /line_items/new(.:format)?               {:action=>\"new\", :controller=>\"line_items\"}", @optimise=true, @requirements={:action=>"new", :controller=>"line_items"}>, :users=>#<ActionController::Routing::Route:0xb72c5314 @conditions={:method=>:get}, @action_requirement="index", @defaults={:action=>"index", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb72c583c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72c579c @is_optional=false, @value="users">, #<ActionController::Routing::OptionalFormatSegment:0xb72c5724 @key=:format, @is_optional=true>], @parameter_shell={:action=>"index", :controller=>"users"}, @to_s="GET    /users(.:format)?                        {:action=>\"index\", :controller=>\"users\"}", @optimise=true, @requirements={:action=>"index", :controller=>"users"}>, :order=>#<ActionController::Routing::Route:0xb79b09bc @conditions={:method=>:get}, @action_requirement="show", @defaults={:action=>"show", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb79b20dc @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79b1e20 @is_optional=false, @value="orders">, #<ActionController::Routing::DividerSegment:0xb79b1d6c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb79b1844 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb79b1628 @key=:format, @is_optional=true>], @parameter_shell={:action=>"show", :controller=>"orders"}, @to_s="GET    /orders/:id(.:format)?                   {:action=>\"show\", :controller=>\"orders\"}", @optimise=false, @requirements={:action=>"show", :controller=>"orders"}>, :edit_order=>#<ActionController::Routing::Route:0xb79c6c44 @conditions={:method=>:get}, @action_requirement="edit", @defaults={:action=>"edit", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb79c7c20 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79c7b30 @is_optional=false, @value="orders">, #<ActionController::Routing::DividerSegment:0xb79c7978 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb79c775c @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb79c7630 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79c7590 @is_optional=false, @value="edit">, #<ActionController::Routing::OptionalFormatSegment:0xb79c7464 @key=:format, @is_optional=true>], @parameter_shell={:action=>"edit", :controller=>"orders"}, @to_s="GET    /orders/:id/edit(.:format)?              {:action=>\"edit\", :controller=>\"orders\"}", @optimise=false, @requirements={:action=>"edit", :controller=>"orders"}>, :edit_line_item=>#<ActionController::Routing::Route:0xb727c768 @conditions={:method=>:get}, @action_requirement="edit", @defaults={:action=>"edit", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb727d0b4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb727d014 @is_optional=false, @value="line_items">, #<ActionController::Routing::DividerSegment:0xb727cf60 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb727cec0 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb727ce0c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb727cd6c @is_optional=false, @value="edit">, #<ActionController::Routing::OptionalFormatSegment:0xb727ccf4 @key=:format, @is_optional=true>], @parameter_shell={:action=>"edit", :controller=>"line_items"}, @to_s="GET    /line_items/:id/edit(.:format)?          {:action=>\"edit\", :controller=>\"line_items\"}", @optimise=false, @requirements={:action=>"edit", :controller=>"line_items"}>, :line_items=>#<ActionController::Routing::Route:0xb7290fc4 @conditions={:method=>:get}, @action_requirement="index", @defaults={:action=>"index", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb729149c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72913fc @is_optional=false, @value="line_items">, #<ActionController::Routing::OptionalFormatSegment:0xb7291384 @key=:format, @is_optional=true>], @parameter_shell={:action=>"index", :controller=>"line_items"}, @to_s="GET    /line_items(.:format)?                   {:action=>\"index\", :controller=>\"line_items\"}", @optimise=true, @requirements={:action=>"index", :controller=>"line_items"}>, :new_user=>#<ActionController::Routing::Route:0xb72b926c @conditions={:method=>:get}, @action_requirement="new", @defaults={:action=>"new", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb72b9924 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72b9884 @is_optional=false, @value="users">, #<ActionController::Routing::DividerSegment:0xb72b97d0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72b9730 @is_optional=false, @value="new">, #<ActionController::Routing::OptionalFormatSegment:0xb72b96b8 @key=:format, @is_optional=true>], @parameter_shell={:action=>"new", :controller=>"users"}, @to_s="GET    /users/new(.:format)?                    {:action=>\"new\", :controller=>\"users\"}", @optimise=true, @requirements={:action=>"new", :controller=>"users"}>, :product=>#<ActionController::Routing::Route:0xb7955c38 @conditions={:method=>:get}, @action_requirement="show", @defaults={:action=>"show", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7958528 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7958488 @is_optional=false, @value="products">, #<ActionController::Routing::DividerSegment:0xb79583d4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb7958334 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb79582bc @key=:format, @is_optional=true>], @parameter_shell={:action=>"show", :controller=>"products"}, @to_s="GET    /products/:id(.:format)?                 {:action=>\"show\", :controller=>\"products\"}", @optimise=false, @requirements={:action=>"show", :controller=>"products"}>, :orders=>#<ActionController::Routing::Route:0xb726a950 @conditions={:method=>:get}, @action_requirement="index", @defaults={:action=>"index", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb726ae28 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb726ad88 @is_optional=false, @value="orders">, #<ActionController::Routing::OptionalFormatSegment:0xb726ad10 @key=:format, @is_optional=true>], @parameter_shell={:action=>"index", :controller=>"orders"}, @to_s="GET    /orders(.:format)?                       {:action=>\"index\", :controller=>\"orders\"}", @optimise=true, @requirements={:action=>"index", :controller=>"orders"}>, :line_item=>#<ActionController::Routing::Route:0xb7276a48 @conditions={:method=>:get}, @action_requirement="show", @defaults={:action=>"show", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb72771f0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7277150 @is_optional=false, @value="line_items">, #<ActionController::Routing::DividerSegment:0xb727709c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb7276ffc @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb7276f84 @key=:format, @is_optional=true>], @parameter_shell={:action=>"show", :controller=>"line_items"}, @to_s="GET    /line_items/:id(.:format)?               {:action=>\"show\", :controller=>\"line_items\"}", @optimise=false, @requirements={:action=>"show", :controller=>"line_items"}>, :edit_user=>#<ActionController::Routing::Route:0xb72ab57c @conditions={:method=>:get}, @action_requirement="edit", @defaults={:action=>"edit", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb72ad2f0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72ad124 @is_optional=false, @value="users">, #<ActionController::Routing::DividerSegment:0xb72ad00c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb72acd64 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb72acb70 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72acad0 @is_optional=false, @value="edit">, #<ActionController::Routing::OptionalFormatSegment:0xb72ac9e0 @key=:format, @is_optional=true>], @parameter_shell={:action=>"edit", :controller=>"users"}, @to_s="GET    /users/:id/edit(.:format)?               {:action=>\"edit\", :controller=>\"users\"}", @optimise=false, @requirements={:action=>"edit", :controller=>"users"}>, :new_product=>#<ActionController::Routing::Route:0xb7974048 @conditions={:method=>:get}, @action_requirement="new", @defaults={:action=>"new", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb79746d8 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7974638 @is_optional=false, @value="products">, #<ActionController::Routing::DividerSegment:0xb7974584 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79744e4 @is_optional=false, @value="new">, #<ActionController::Routing::OptionalFormatSegment:0xb797446c @key=:format, @is_optional=true>], @parameter_shell={:action=>"new", :controller=>"products"}, @to_s="GET    /products/new(.:format)?                 {:action=>\"new\", :controller=>\"products\"}", @optimise=true, @requirements={:action=>"new", :controller=>"products"}>, :products=>#<ActionController::Routing::Route:0xb798b6bc @conditions={:method=>:get}, @action_requirement="index", @defaults={:action=>"index", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb798bb94 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb798baf4 @is_optional=false, @value="products">, #<ActionController::Routing::OptionalFormatSegment:0xb798ba7c @key=:format, @is_optional=true>], @parameter_shell={:action=>"index", :controller=>"products"}, @to_s="GET    /products(.:format)?                     {:action=>\"index\", :controller=>\"products\"}", @optimise=true, @requirements={:action=>"index", :controller=>"products"}>, :user=>#<ActionController::Routing::Route:0xb72a31c4 @conditions={:method=>:get}, @action_requirement="show", @defaults={:action=>"show", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb72a396c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72a38cc @is_optional=false, @value="users">, #<ActionController::Routing::DividerSegment:0xb72a3818 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb72a3778 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb72a3700 @key=:format, @is_optional=true>], @parameter_shell={:action=>"show", :controller=>"users"}, @to_s="GET    /users/:id(.:format)?                    {:action=>\"show\", :controller=>\"users\"}", @optimise=false, @requirements={:action=>"show", :controller=>"users"}>}>, @combined_regexp=nil, @routes=[#<ActionController::Routing::Route:0xb72c5314 @conditions={:method=>:get}, @action_requirement="index", @defaults={:action=>"index", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb72c583c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72c579c @is_optional=false, @value="users">, #<ActionController::Routing::OptionalFormatSegment:0xb72c5724 @key=:format, @is_optional=true>], @parameter_shell={:action=>"index", :controller=>"users"}, @to_s="GET    /users(.:format)?                        {:action=>\"index\", :controller=>\"users\"}", @optimise=true, @requirements={:action=>"index", :controller=>"users"}>, #<ActionController::Routing::Route:0xb72bb9f4 @conditions={:method=>:post}, @action_requirement="create", @defaults={:action=>"create", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb72bbf44 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72bbe90 @is_optional=false, @value="users">, #<ActionController::Routing::OptionalFormatSegment:0xb72bbe18 @key=:format, @is_optional=true>], @parameter_shell={:action=>"create", :controller=>"users"}, @to_s="POST   /users(.:format)?                        {:action=>\"create\", :controller=>\"users\"}", @optimise=true, @requirements={:action=>"create", :controller=>"users"}>, #<ActionController::Routing::Route:0xb72b926c @conditions={:method=>:get}, @action_requirement="new", @defaults={:action=>"new", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb72b9924 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72b9884 @is_optional=false, @value="users">, #<ActionController::Routing::DividerSegment:0xb72b97d0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72b9730 @is_optional=false, @value="new">, #<ActionController::Routing::OptionalFormatSegment:0xb72b96b8 @key=:format, @is_optional=true>], @parameter_shell={:action=>"new", :controller=>"users"}, @to_s="GET    /users/new(.:format)?                    {:action=>\"new\", :controller=>\"users\"}", @optimise=true, @requirements={:action=>"new", :controller=>"users"}>, #<ActionController::Routing::Route:0xb72ab57c @conditions={:method=>:get}, @action_requirement="edit", @defaults={:action=>"edit", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb72ad2f0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72ad124 @is_optional=false, @value="users">, #<ActionController::Routing::DividerSegment:0xb72ad00c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb72acd64 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb72acb70 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72acad0 @is_optional=false, @value="edit">, #<ActionController::Routing::OptionalFormatSegment:0xb72ac9e0 @key=:format, @is_optional=true>], @parameter_shell={:action=>"edit", :controller=>"users"}, @to_s="GET    /users/:id/edit(.:format)?               {:action=>\"edit\", :controller=>\"users\"}", @optimise=false, @requirements={:action=>"edit", :controller=>"users"}>, #<ActionController::Routing::Route:0xb72a31c4 @conditions={:method=>:get}, @action_requirement="show", @defaults={:action=>"show", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb72a396c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72a38cc @is_optional=false, @value="users">, #<ActionController::Routing::DividerSegment:0xb72a3818 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb72a3778 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb72a3700 @key=:format, @is_optional=true>], @parameter_shell={:action=>"show", :controller=>"users"}, @to_s="GET    /users/:id(.:format)?                    {:action=>\"show\", :controller=>\"users\"}", @optimise=false, @requirements={:action=>"show", :controller=>"users"}>, #<ActionController::Routing::Route:0xb729a948 @conditions={:method=>:put}, @action_requirement="update", @defaults={:action=>"update", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb729be4c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb729bdac @is_optional=false, @value="users">, #<ActionController::Routing::DividerSegment:0xb729bcf8 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb729bc58 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb729bb18 @key=:format, @is_optional=true>], @parameter_shell={:action=>"update", :controller=>"users"}, @to_s="PUT    /users/:id(.:format)?                    {:action=>\"update\", :controller=>\"users\"}", @optimise=false, @requirements={:action=>"update", :controller=>"users"}>, #<ActionController::Routing::Route:0xb72942dc @conditions={:method=>:delete}, @action_requirement="destroy", @defaults={:action=>"destroy", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7294a84 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72949e4 @is_optional=false, @value="users">, #<ActionController::Routing::DividerSegment:0xb7294930 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb7294890 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb7294818 @key=:format, @is_optional=true>], @parameter_shell={:action=>"destroy", :controller=>"users"}, @to_s="DELETE /users/:id(.:format)?                    {:action=>\"destroy\", :controller=>\"users\"}", @optimise=false, @requirements={:action=>"destroy", :controller=>"users"}>, #<ActionController::Routing::Route:0xb7290fc4 @conditions={:method=>:get}, @action_requirement="index", @defaults={:action=>"index", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb729149c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72913fc @is_optional=false, @value="line_items">, #<ActionController::Routing::OptionalFormatSegment:0xb7291384 @key=:format, @is_optional=true>], @parameter_shell={:action=>"index", :controller=>"line_items"}, @to_s="GET    /line_items(.:format)?                   {:action=>\"index\", :controller=>\"line_items\"}", @optimise=true, @requirements={:action=>"index", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb728820c @conditions={:method=>:post}, @action_requirement="create", @defaults={:action=>"create", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb72886e4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7288644 @is_optional=false, @value="line_items">, #<ActionController::Routing::OptionalFormatSegment:0xb72885cc @key=:format, @is_optional=true>], @parameter_shell={:action=>"create", :controller=>"line_items"}, @to_s="POST   /line_items(.:format)?                   {:action=>\"create\", :controller=>\"line_items\"}", @optimise=true, @requirements={:action=>"create", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb7285d04 @conditions={:method=>:get}, @action_requirement="new", @defaults={:action=>"new", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7286380 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb72862e0 @is_optional=false, @value="line_items">, #<ActionController::Routing::DividerSegment:0xb728622c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb728618c @is_optional=false, @value="new">, #<ActionController::Routing::OptionalFormatSegment:0xb7286114 @key=:format, @is_optional=true>], @parameter_shell={:action=>"new", :controller=>"line_items"}, @to_s="GET    /line_items/new(.:format)?               {:action=>\"new\", :controller=>\"line_items\"}", @optimise=true, @requirements={:action=>"new", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb727c768 @conditions={:method=>:get}, @action_requirement="edit", @defaults={:action=>"edit", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb727d0b4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb727d014 @is_optional=false, @value="line_items">, #<ActionController::Routing::DividerSegment:0xb727cf60 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb727cec0 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb727ce0c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb727cd6c @is_optional=false, @value="edit">, #<ActionController::Routing::OptionalFormatSegment:0xb727ccf4 @key=:format, @is_optional=true>], @parameter_shell={:action=>"edit", :controller=>"line_items"}, @to_s="GET    /line_items/:id/edit(.:format)?          {:action=>\"edit\", :controller=>\"line_items\"}", @optimise=false, @requirements={:action=>"edit", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb7276a48 @conditions={:method=>:get}, @action_requirement="show", @defaults={:action=>"show", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb72771f0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7277150 @is_optional=false, @value="line_items">, #<ActionController::Routing::DividerSegment:0xb727709c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb7276ffc @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb7276f84 @key=:format, @is_optional=true>], @parameter_shell={:action=>"show", :controller=>"line_items"}, @to_s="GET    /line_items/:id(.:format)?               {:action=>\"show\", :controller=>\"line_items\"}", @optimise=false, @requirements={:action=>"show", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb7270e40 @conditions={:method=>:put}, @action_requirement="update", @defaults={:action=>"update", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb72715e8 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7271548 @is_optional=false, @value="line_items">, #<ActionController::Routing::DividerSegment:0xb7271494 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb72713f4 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb727137c @key=:format, @is_optional=true>], @parameter_shell={:action=>"update", :controller=>"line_items"}, @to_s="PUT    /line_items/:id(.:format)?               {:action=>\"update\", :controller=>\"line_items\"}", @optimise=false, @requirements={:action=>"update", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb726dc68 @conditions={:method=>:delete}, @action_requirement="destroy", @defaults={:action=>"destroy", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb726e410 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb726e370 @is_optional=false, @value="line_items">, #<ActionController::Routing::DividerSegment:0xb726e2bc @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb726e21c @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb726e1a4 @key=:format, @is_optional=true>], @parameter_shell={:action=>"destroy", :controller=>"line_items"}, @to_s="DELETE /line_items/:id(.:format)?               {:action=>\"destroy\", :controller=>\"line_items\"}", @optimise=false, @requirements={:action=>"destroy", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb726a950 @conditions={:method=>:get}, @action_requirement="index", @defaults={:action=>"index", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb726ae28 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb726ad88 @is_optional=false, @value="orders">, #<ActionController::Routing::OptionalFormatSegment:0xb726ad10 @key=:format, @is_optional=true>], @parameter_shell={:action=>"index", :controller=>"orders"}, @to_s="GET    /orders(.:format)?                       {:action=>\"index\", :controller=>\"orders\"}", @optimise=true, @requirements={:action=>"index", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb79f0648 @conditions={:method=>:post}, @action_requirement="create", @defaults={:action=>"create", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb79f0b70 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79f0ad0 @is_optional=false, @value="orders">, #<ActionController::Routing::OptionalFormatSegment:0xb79f0a44 @key=:format, @is_optional=true>], @parameter_shell={:action=>"create", :controller=>"orders"}, @to_s="POST   /orders(.:format)?                       {:action=>\"create\", :controller=>\"orders\"}", @optimise=true, @requirements={:action=>"create", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb79ec958 @conditions={:method=>:get}, @action_requirement="new", @defaults={:action=>"new", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb79ed6b4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79ed5ec @is_optional=false, @value="orders">, #<ActionController::Routing::DividerSegment:0xb79ed4e8 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79ed420 @is_optional=false, @value="new">, #<ActionController::Routing::OptionalFormatSegment:0xb79ed3a8 @key=:format, @is_optional=true>], @parameter_shell={:action=>"new", :controller=>"orders"}, @to_s="GET    /orders/new(.:format)?                   {:action=>\"new\", :controller=>\"orders\"}", @optimise=true, @requirements={:action=>"new", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb79c6c44 @conditions={:method=>:get}, @action_requirement="edit", @defaults={:action=>"edit", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb79c7c20 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79c7b30 @is_optional=false, @value="orders">, #<ActionController::Routing::DividerSegment:0xb79c7978 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb79c775c @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb79c7630 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79c7590 @is_optional=false, @value="edit">, #<ActionController::Routing::OptionalFormatSegment:0xb79c7464 @key=:format, @is_optional=true>], @parameter_shell={:action=>"edit", :controller=>"orders"}, @to_s="GET    /orders/:id/edit(.:format)?              {:action=>\"edit\", :controller=>\"orders\"}", @optimise=false, @requirements={:action=>"edit", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb79b09bc @conditions={:method=>:get}, @action_requirement="show", @defaults={:action=>"show", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb79b20dc @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79b1e20 @is_optional=false, @value="orders">, #<ActionController::Routing::DividerSegment:0xb79b1d6c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb79b1844 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb79b1628 @key=:format, @is_optional=true>], @parameter_shell={:action=>"show", :controller=>"orders"}, @to_s="GET    /orders/:id(.:format)?                   {:action=>\"show\", :controller=>\"orders\"}", @optimise=false, @requirements={:action=>"show", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb799f798 @conditions={:method=>:put}, @action_requirement="update", @defaults={:action=>"update", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb79a2ba0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79a2470 @is_optional=false, @value="orders">, #<ActionController::Routing::DividerSegment:0xb79a213c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb79a146c @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb79a11ec @key=:format, @is_optional=true>], @parameter_shell={:action=>"update", :controller=>"orders"}, @to_s="PUT    /orders/:id(.:format)?                   {:action=>\"update\", :controller=>\"orders\"}", @optimise=false, @requirements={:action=>"update", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb7994974 @conditions={:method=>:delete}, @action_requirement="destroy", @defaults={:action=>"destroy", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7995414 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7995374 @is_optional=false, @value="orders">, #<ActionController::Routing::DividerSegment:0xb799525c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb7995158 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb7995090 @key=:format, @is_optional=true>], @parameter_shell={:action=>"destroy", :controller=>"orders"}, @to_s="DELETE /orders/:id(.:format)?                   {:action=>\"destroy\", :controller=>\"orders\"}", @optimise=false, @requirements={:action=>"destroy", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb798b6bc @conditions={:method=>:get}, @action_requirement="index", @defaults={:action=>"index", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb798bb94 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb798baf4 @is_optional=false, @value="products">, #<ActionController::Routing::OptionalFormatSegment:0xb798ba7c @key=:format, @is_optional=true>], @parameter_shell={:action=>"index", :controller=>"products"}, @to_s="GET    /products(.:format)?                     {:action=>\"index\", :controller=>\"products\"}", @optimise=true, @requirements={:action=>"index", :controller=>"products"}>, #<ActionController::Routing::Route:0xb797662c @conditions={:method=>:post}, @action_requirement="create", @defaults={:action=>"create", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7976bcc @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7976b2c @is_optional=false, @value="products">, #<ActionController::Routing::OptionalFormatSegment:0xb7976ab4 @key=:format, @is_optional=true>], @parameter_shell={:action=>"create", :controller=>"products"}, @to_s="POST   /products(.:format)?                     {:action=>\"create\", :controller=>\"products\"}", @optimise=true, @requirements={:action=>"create", :controller=>"products"}>, #<ActionController::Routing::Route:0xb7974048 @conditions={:method=>:get}, @action_requirement="new", @defaults={:action=>"new", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb79746d8 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7974638 @is_optional=false, @value="products">, #<ActionController::Routing::DividerSegment:0xb7974584 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79744e4 @is_optional=false, @value="new">, #<ActionController::Routing::OptionalFormatSegment:0xb797446c @key=:format, @is_optional=true>], @parameter_shell={:action=>"new", :controller=>"products"}, @to_s="GET    /products/new(.:format)?                 {:action=>\"new\", :controller=>\"products\"}", @optimise=true, @requirements={:action=>"new", :controller=>"products"}>, #<ActionController::Routing::Route:0xb7960c78 @conditions={:method=>:get}, @action_requirement="edit", @defaults={:action=>"edit", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7961ac4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7961a24 @is_optional=false, @value="products">, #<ActionController::Routing::DividerSegment:0xb7961970 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb79618d0 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb796181c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb796177c @is_optional=false, @value="edit">, #<ActionController::Routing::OptionalFormatSegment:0xb7961704 @key=:format, @is_optional=true>], @parameter_shell={:action=>"edit", :controller=>"products"}, @to_s="GET    /products/:id/edit(.:format)?            {:action=>\"edit\", :controller=>\"products\"}", @optimise=false, @requirements={:action=>"edit", :controller=>"products"}>, #<ActionController::Routing::Route:0xb7955c38 @conditions={:method=>:get}, @action_requirement="show", @defaults={:action=>"show", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7958528 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7958488 @is_optional=false, @value="products">, #<ActionController::Routing::DividerSegment:0xb79583d4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb7958334 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb79582bc @key=:format, @is_optional=true>], @parameter_shell={:action=>"show", :controller=>"products"}, @to_s="GET    /products/:id(.:format)?                 {:action=>\"show\", :controller=>\"products\"}", @optimise=false, @requirements={:action=>"show", :controller=>"products"}>, #<ActionController::Routing::Route:0xb794da10 @conditions={:method=>:put}, @action_requirement="update", @defaults={:action=>"update", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb794e1b8 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb794e118 @is_optional=false, @value="products">, #<ActionController::Routing::DividerSegment:0xb794e064 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb794dfc4 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb794df4c @key=:format, @is_optional=true>], @parameter_shell={:action=>"update", :controller=>"products"}, @to_s="PUT    /products/:id(.:format)?                 {:action=>\"update\", :controller=>\"products\"}", @optimise=false, @requirements={:action=>"update", :controller=>"products"}>, #<ActionController::Routing::Route:0xb79492d0 @conditions={:method=>:delete}, @action_requirement="destroy", @defaults={:action=>"destroy", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb794a1e4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb794a11c @is_optional=false, @value="products">, #<ActionController::Routing::DividerSegment:0xb794a004 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb7949ec4 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb7949e10 @key=:format, @is_optional=true>], @parameter_shell={:action=>"destroy", :controller=>"products"}, @to_s="DELETE /products/:id(.:format)?                 {:action=>\"destroy\", :controller=>\"products\"}", @optimise=false, @requirements={:action=>"destroy", :controller=>"products"}>, #<ActionController::Routing::Route:0xb79455b8 @conditions={}, @action_requirement=nil, @defaults={:action=>"index"}, @matching_prepared=true, @controller_requirement=nil, @significant_keys=[:controller, :action, :id], @segments=[#<ActionController::Routing::DividerSegment:0xb7945d88 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::ControllerSegment:0xb7945ce8 @key=:controller, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb7945c34 @raw=true, @is_optional=true, @value="/">, #<ActionController::Routing::DynamicSegment:0xb7945b94 @default="index", @key=:action, @is_optional=true>, #<ActionController::Routing::DividerSegment:0xb7945ae0 @raw=true, @is_optional=true, @value="/">, #<ActionController::Routing::DynamicSegment:0xb7945a40 @key=:id, @is_optional=true>, #<ActionController::Routing::DividerSegment:0xb7945914 @raw=true, @is_optional=true, @value="/">], @parameter_shell={}, @to_s="ANY    /:controller/:action/:id/                {}", @optimise=false, @requirements={}>, #<ActionController::Routing::Route:0xb793af00 @conditions={}, @action_requirement=nil, @defaults={:action=>"index"}, @matching_prepared=true, @controller_requirement=nil, @significant_keys=[:controller, :action, :id, :format], @segments=[#<ActionController::Routing::DividerSegment:0xb793b450 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::ControllerSegment:0xb793b3b0 @key=:controller, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb793b2fc @raw=true, @is_optional=true, @value="/">, #<ActionController::Routing::DynamicSegment:0xb793b25c @default="index", @key=:action, @is_optional=true>, #<ActionController::Routing::DividerSegment:0xb793b1a8 @raw=true, @is_optional=true, @value="/">, #<ActionController::Routing::DynamicSegment:0xb793b108 @key=:id, @is_optional=true>, #<ActionController::Routing::OptionalFormatSegment:0xb793b090 @key=:format, @is_optional=true>], @parameter_shell={}, @to_s="ANY    /:controller/:action/:id(.:format)?      {}", @optimise=false, @requirements={}>, #<ActionController::Routing::Route:0xb79286c0 @conditions={:method=>:get}, @action_requirement="index", @defaults={:action=>"index", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7928ef4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7928e40 @is_optional=false, @value="users">, #<ActionController::Routing::OptionalFormatSegment:0xb7928da0 @key=:format, @is_optional=true>], @parameter_shell={:action=>"index", :controller=>"users"}, @to_s="GET    /users(.:format)?                        {:action=>\"index\", :controller=>\"users\"}", @optimise=true, @requirements={:action=>"index", :controller=>"users"}>, #<ActionController::Routing::Route:0xb79253f8 @conditions={:method=>:post}, @action_requirement="create", @defaults={:action=>"create", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb792644c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7926384 @is_optional=false, @value="users">, #<ActionController::Routing::OptionalFormatSegment:0xb7926244 @key=:format, @is_optional=true>], @parameter_shell={:action=>"create", :controller=>"users"}, @to_s="POST   /users(.:format)?                        {:action=>\"create\", :controller=>\"users\"}", @optimise=true, @requirements={:action=>"create", :controller=>"users"}>, #<ActionController::Routing::Route:0xb791fcc8 @conditions={:method=>:get}, @action_requirement="new", @defaults={:action=>"new", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7920344 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb79202a4 @is_optional=false, @value="users">, #<ActionController::Routing::DividerSegment:0xb79201f0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7920150 @is_optional=false, @value="new">, #<ActionController::Routing::OptionalFormatSegment:0xb79200d8 @key=:format, @is_optional=true>], @parameter_shell={:action=>"new", :controller=>"users"}, @to_s="GET    /users/new(.:format)?                    {:action=>\"new\", :controller=>\"users\"}", @optimise=true, @requirements={:action=>"new", :controller=>"users"}>, #<ActionController::Routing::Route:0xb791affc @conditions={:method=>:get}, @action_requirement="edit", @defaults={:action=>"edit", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb791c334 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb791c294 @is_optional=false, @value="users">, #<ActionController::Routing::DividerSegment:0xb791c104 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb791c064 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb791bf9c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb791be0c @is_optional=false, @value="edit">, #<ActionController::Routing::OptionalFormatSegment:0xb791bb64 @key=:format, @is_optional=true>], @parameter_shell={:action=>"edit", :controller=>"users"}, @to_s="GET    /users/:id/edit(.:format)?               {:action=>\"edit\", :controller=>\"users\"}", @optimise=false, @requirements={:action=>"edit", :controller=>"users"}>, #<ActionController::Routing::Route:0xb790e3c4 @conditions={:method=>:get}, @action_requirement="show", @defaults={:action=>"show", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb790ec0c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb790eb6c @is_optional=false, @value="users">, #<ActionController::Routing::DividerSegment:0xb790eab8 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb790ea18 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb790e9a0 @key=:format, @is_optional=true>], @parameter_shell={:action=>"show", :controller=>"users"}, @to_s="GET    /users/:id(.:format)?                    {:action=>\"show\", :controller=>\"users\"}", @optimise=false, @requirements={:action=>"show", :controller=>"users"}>, #<ActionController::Routing::Route:0xb78f75ac @conditions={:method=>:put}, @action_requirement="update", @defaults={:action=>"update", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78f8894 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78f87f4 @is_optional=false, @value="users">, #<ActionController::Routing::DividerSegment:0xb78f8740 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb78f8524 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb78f81a0 @key=:format, @is_optional=true>], @parameter_shell={:action=>"update", :controller=>"users"}, @to_s="PUT    /users/:id(.:format)?                    {:action=>\"update\", :controller=>\"users\"}", @optimise=false, @requirements={:action=>"update", :controller=>"users"}>, #<ActionController::Routing::Route:0xb78ee344 @conditions={:method=>:delete}, @action_requirement="destroy", @defaults={:action=>"destroy", :controller=>"users"}, @matching_prepared=true, @controller_requirement="users", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78eeaec @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78eea4c @is_optional=false, @value="users">, #<ActionController::Routing::DividerSegment:0xb78ee998 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb78ee8f8 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb78ee880 @key=:format, @is_optional=true>], @parameter_shell={:action=>"destroy", :controller=>"users"}, @to_s="DELETE /users/:id(.:format)?                    {:action=>\"destroy\", :controller=>\"users\"}", @optimise=false, @requirements={:action=>"destroy", :controller=>"users"}>, #<ActionController::Routing::Route:0xb78ea8e8 @conditions={:method=>:get}, @action_requirement="index", @defaults={:action=>"index", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78eadc0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78ead20 @is_optional=false, @value="line_items">, #<ActionController::Routing::OptionalFormatSegment:0xb78eaca8 @key=:format, @is_optional=true>], @parameter_shell={:action=>"index", :controller=>"line_items"}, @to_s="GET    /line_items(.:format)?                   {:action=>\"index\", :controller=>\"line_items\"}", @optimise=true, @requirements={:action=>"index", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb78e6568 @conditions={:method=>:post}, @action_requirement="create", @defaults={:action=>"create", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78e742c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78e738c @is_optional=false, @value="line_items">, #<ActionController::Routing::OptionalFormatSegment:0xb78e7314 @key=:format, @is_optional=true>], @parameter_shell={:action=>"create", :controller=>"line_items"}, @to_s="POST   /line_items(.:format)?                   {:action=>\"create\", :controller=>\"line_items\"}", @optimise=true, @requirements={:action=>"create", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb78e3444 @conditions={:method=>:get}, @action_requirement="new", @defaults={:action=>"new", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78e3ac0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78e3a20 @is_optional=false, @value="line_items">, #<ActionController::Routing::DividerSegment:0xb78e396c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78e38cc @is_optional=false, @value="new">, #<ActionController::Routing::OptionalFormatSegment:0xb78e3854 @key=:format, @is_optional=true>], @parameter_shell={:action=>"new", :controller=>"line_items"}, @to_s="GET    /line_items/new(.:format)?               {:action=>\"new\", :controller=>\"line_items\"}", @optimise=true, @requirements={:action=>"new", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb78e0474 @conditions={:method=>:get}, @action_requirement="edit", @defaults={:action=>"edit", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78e0f14 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78e0e74 @is_optional=false, @value="line_items">, #<ActionController::Routing::DividerSegment:0xb78e0dc0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb78e0d20 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb78e0c58 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78e0a78 @is_optional=false, @value="edit">, #<ActionController::Routing::OptionalFormatSegment:0xb78e0a00 @key=:format, @is_optional=true>], @parameter_shell={:action=>"edit", :controller=>"line_items"}, @to_s="GET    /line_items/:id/edit(.:format)?          {:action=>\"edit\", :controller=>\"line_items\"}", @optimise=false, @requirements={:action=>"edit", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb78dae70 @conditions={:method=>:get}, @action_requirement="show", @defaults={:action=>"show", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78db62c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78db58c @is_optional=false, @value="line_items">, #<ActionController::Routing::DividerSegment:0xb78db4d8 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb78db424 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb78db3ac @key=:format, @is_optional=true>], @parameter_shell={:action=>"show", :controller=>"line_items"}, @to_s="GET    /line_items/:id(.:format)?               {:action=>\"show\", :controller=>\"line_items\"}", @optimise=false, @requirements={:action=>"show", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb78d75b8 @conditions={:method=>:put}, @action_requirement="update", @defaults={:action=>"update", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78d7d60 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78d7cc0 @is_optional=false, @value="line_items">, #<ActionController::Routing::DividerSegment:0xb78d7c0c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb78d7b6c @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb78d7af4 @key=:format, @is_optional=true>], @parameter_shell={:action=>"update", :controller=>"line_items"}, @to_s="PUT    /line_items/:id(.:format)?               {:action=>\"update\", :controller=>\"line_items\"}", @optimise=false, @requirements={:action=>"update", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb78d2874 @conditions={:method=>:delete}, @action_requirement="destroy", @defaults={:action=>"destroy", :controller=>"line_items"}, @matching_prepared=true, @controller_requirement="line_items", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78d3044 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78d2fa4 @is_optional=false, @value="line_items">, #<ActionController::Routing::DividerSegment:0xb78d2ef0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb78d2e50 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb78d2dd8 @key=:format, @is_optional=true>], @parameter_shell={:action=>"destroy", :controller=>"line_items"}, @to_s="DELETE /line_items/:id(.:format)?               {:action=>\"destroy\", :controller=>\"line_items\"}", @optimise=false, @requirements={:action=>"destroy", :controller=>"line_items"}>, #<ActionController::Routing::Route:0xb78cb09c @conditions={:method=>:get}, @action_requirement="index", @defaults={:action=>"index", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78cb7b8 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78cb5c4 @is_optional=false, @value="orders">, #<ActionController::Routing::OptionalFormatSegment:0xb78cb54c @key=:format, @is_optional=true>], @parameter_shell={:action=>"index", :controller=>"orders"}, @to_s="GET    /orders(.:format)?                       {:action=>\"index\", :controller=>\"orders\"}", @optimise=true, @requirements={:action=>"index", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb78c5840 @conditions={:method=>:post}, @action_requirement="create", @defaults={:action=>"create", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78c6060 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78c5f20 @is_optional=false, @value="orders">, #<ActionController::Routing::OptionalFormatSegment:0xb78c5e58 @key=:format, @is_optional=true>], @parameter_shell={:action=>"create", :controller=>"orders"}, @to_s="POST   /orders(.:format)?                       {:action=>\"create\", :controller=>\"orders\"}", @optimise=true, @requirements={:action=>"create", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb78bfd78 @conditions={:method=>:get}, @action_requirement="new", @defaults={:action=>"new", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78c03f4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78c0354 @is_optional=false, @value="orders">, #<ActionController::Routing::DividerSegment:0xb78c02a0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78c0200 @is_optional=false, @value="new">, #<ActionController::Routing::OptionalFormatSegment:0xb78c0188 @key=:format, @is_optional=true>], @parameter_shell={:action=>"new", :controller=>"orders"}, @to_s="GET    /orders/new(.:format)?                   {:action=>\"new\", :controller=>\"orders\"}", @optimise=true, @requirements={:action=>"new", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb78bc36c @conditions={:method=>:get}, @action_requirement="edit", @defaults={:action=>"edit", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78bd4ec @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78bd438 @is_optional=false, @value="orders">, #<ActionController::Routing::DividerSegment:0xb78bd370 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb78bd2a8 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb78bd1e0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78bd140 @is_optional=false, @value="edit">, #<ActionController::Routing::OptionalFormatSegment:0xb78bd0c8 @key=:format, @is_optional=true>], @parameter_shell={:action=>"edit", :controller=>"orders"}, @to_s="GET    /orders/:id/edit(.:format)?              {:action=>\"edit\", :controller=>\"orders\"}", @optimise=false, @requirements={:action=>"edit", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb78b3cd0 @conditions={:method=>:get}, @action_requirement="show", @defaults={:action=>"show", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78b4478 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78b43d8 @is_optional=false, @value="orders">, #<ActionController::Routing::DividerSegment:0xb78b4324 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb78b4284 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb78b420c @key=:format, @is_optional=true>], @parameter_shell={:action=>"show", :controller=>"orders"}, @to_s="GET    /orders/:id(.:format)?                   {:action=>\"show\", :controller=>\"orders\"}", @optimise=false, @requirements={:action=>"show", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb78af7fc @conditions={:method=>:put}, @action_requirement="update", @defaults={:action=>"update", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78affb8 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78aff18 @is_optional=false, @value="orders">, #<ActionController::Routing::DividerSegment:0xb78afe50 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb78afdb0 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb78afd38 @key=:format, @is_optional=true>], @parameter_shell={:action=>"update", :controller=>"orders"}, @to_s="PUT    /orders/:id(.:format)?                   {:action=>\"update\", :controller=>\"orders\"}", @optimise=false, @requirements={:action=>"update", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb78a68f0 @conditions={:method=>:delete}, @action_requirement="destroy", @defaults={:action=>"destroy", :controller=>"orders"}, @matching_prepared=true, @controller_requirement="orders", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78a74d0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78a7304 @is_optional=false, @value="orders">, #<ActionController::Routing::DividerSegment:0xb78a7250 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb78a7160 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb78a70e8 @key=:format, @is_optional=true>], @parameter_shell={:action=>"destroy", :controller=>"orders"}, @to_s="DELETE /orders/:id(.:format)?                   {:action=>\"destroy\", :controller=>\"orders\"}", @optimise=false, @requirements={:action=>"destroy", :controller=>"orders"}>, #<ActionController::Routing::Route:0xb788f628 @conditions={:method=>:get}, @action_requirement="index", @defaults={:action=>"index", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7892fe4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7892918 @is_optional=false, @value="products">, #<ActionController::Routing::OptionalFormatSegment:0xb7891ec8 @key=:format, @is_optional=true>], @parameter_shell={:action=>"index", :controller=>"products"}, @to_s="GET    /products(.:format)?                     {:action=>\"index\", :controller=>\"products\"}", @optimise=true, @requirements={:action=>"index", :controller=>"products"}>, #<ActionController::Routing::Route:0xb7875c78 @conditions={:method=>:post}, @action_requirement="create", @defaults={:action=>"create", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7876984 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78766b4 @is_optional=false, @value="products">, #<ActionController::Routing::OptionalFormatSegment:0xb7876358 @key=:format, @is_optional=true>], @parameter_shell={:action=>"create", :controller=>"products"}, @to_s="POST   /products(.:format)?                     {:action=>\"create\", :controller=>\"products\"}", @optimise=true, @requirements={:action=>"create", :controller=>"products"}>, #<ActionController::Routing::Route:0xb786fff8 @conditions={:method=>:get}, @action_requirement="new", @defaults={:action=>"new", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb78712cc @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb78711a0 @is_optional=false, @value="products">, #<ActionController::Routing::DividerSegment:0xb78710ec @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7870f0c @is_optional=false, @value="new">, #<ActionController::Routing::OptionalFormatSegment:0xb7870e80 @key=:format, @is_optional=true>], @parameter_shell={:action=>"new", :controller=>"products"}, @to_s="GET    /products/new(.:format)?                 {:action=>\"new\", :controller=>\"products\"}", @optimise=true, @requirements={:action=>"new", :controller=>"products"}>, #<ActionController::Routing::Route:0xb786b87c @conditions={:method=>:get}, @action_requirement="edit", @defaults={:action=>"edit", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb786c31c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb786c254 @is_optional=false, @value="products">, #<ActionController::Routing::DividerSegment:0xb786c1a0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb786c100 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb786c010 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb786bf34 @is_optional=false, @value="edit">, #<ActionController::Routing::OptionalFormatSegment:0xb786be94 @key=:format, @is_optional=true>], @parameter_shell={:action=>"edit", :controller=>"products"}, @to_s="GET    /products/:id/edit(.:format)?            {:action=>\"edit\", :controller=>\"products\"}", @optimise=false, @requirements={:action=>"edit", :controller=>"products"}>, #<ActionController::Routing::Route:0xb786141c @conditions={:method=>:get}, @action_requirement="show", @defaults={:action=>"show", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb7863e74 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb7863dac @is_optional=false, @value="products">, #<ActionController::Routing::DividerSegment:0xb7863be0 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb78636e0 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb7863474 @key=:format, @is_optional=true>], @parameter_shell={:action=>"show", :controller=>"products"}, @to_s="GET    /products/:id(.:format)?                 {:action=>\"show\", :controller=>\"products\"}", @optimise=false, @requirements={:action=>"show", :controller=>"products"}>, #<ActionController::Routing::Route:0xb7859550 @conditions={:method=>:put}, @action_requirement="update", @defaults={:action=>"update", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb785b29c @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb785b1d4 @is_optional=false, @value="products">, #<ActionController::Routing::DividerSegment:0xb785af68 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb785acc0 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb785ac48 @key=:format, @is_optional=true>], @parameter_shell={:action=>"update", :controller=>"products"}, @to_s="PUT    /products/:id(.:format)?                 {:action=>\"update\", :controller=>\"products\"}", @optimise=false, @requirements={:action=>"update", :controller=>"products"}>, #<ActionController::Routing::Route:0xb7838530 @conditions={:method=>:delete}, @action_requirement="destroy", @defaults={:action=>"destroy", :controller=>"products"}, @matching_prepared=true, @controller_requirement="products", @significant_keys=[:id, :format, :action, :controller], @segments=[#<ActionController::Routing::DividerSegment:0xb783c270 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::StaticSegment:0xb783be10 @is_optional=false, @value="products">, #<ActionController::Routing::DividerSegment:0xb783b8fc @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::DynamicSegment:0xb783b690 @regexp=/[^\/.?]+/, @key=:id, @is_optional=false>, #<ActionController::Routing::OptionalFormatSegment:0xb783b438 @key=:format, @is_optional=true>], @parameter_shell={:action=>"destroy", :controller=>"products"}, @to_s="DELETE /products/:id(.:format)?                 {:action=>\"destroy\", :controller=>\"products\"}", @optimise=false, @requirements={:action=>"destroy", :controller=>"products"}>, #<ActionController::Routing::Route:0xb783211c @conditions={}, @action_requirement=nil, @defaults={:action=>"index"}, @matching_prepared=true, @controller_requirement=nil, @significant_keys=[:controller, :action, :id], @segments=[#<ActionController::Routing::DividerSegment:0xb7832ff4 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::ControllerSegment:0xb7832f18 @key=:controller, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb7832e50 @raw=true, @is_optional=true, @value="/">, #<ActionController::Routing::DynamicSegment:0xb7832d10 @default="index", @key=:action, @is_optional=true>, #<ActionController::Routing::DividerSegment:0xb7832bf8 @raw=true, @is_optional=true, @value="/">, #<ActionController::Routing::DynamicSegment:0xb78327c0 @key=:id, @is_optional=true>, #<ActionController::Routing::DividerSegment:0xb783248c @raw=true, @is_optional=true, @value="/">], @parameter_shell={}, @to_s="ANY    /:controller/:action/:id/                {}", @optimise=false, @requirements={}>, #<ActionController::Routing::Route:0xb7818e9c @conditions={}, @action_requirement=nil, @defaults={:action=>"index"}, @matching_prepared=true, @controller_requirement=nil, @significant_keys=[:controller, :action, :id, :format], @segments=[#<ActionController::Routing::DividerSegment:0xb781b124 @raw=true, @is_optional=false, @value="/">, #<ActionController::Routing::ControllerSegment:0xb781b070 @key=:controller, @is_optional=false>, #<ActionController::Routing::DividerSegment:0xb7819e64 @raw=true, @is_optional=true, @value="/">, #<ActionController::Routing::DynamicSegment:0xb7819b1c @default="index", @key=:action, @is_optional=true>, #<ActionController::Routing::DividerSegment:0xb7819964 @raw=true, @is_optional=true, @value="/">, #<ActionController::Routing::DynamicSegment:0xb781989c @key=:id, @is_optional=true>, #<ActionController::Routing::OptionalFormatSegment:0xb78190b8 @key=:format, @is_optional=true>], @parameter_shell={}, @to_s="ANY    /:controller/:action/:id(.:format)?      {}", @optimise=false, @requirements={}>]>
>> app = ActionController::Integration::Session.new
=> #<ActionController::Integration::Session:0xb72cd0f0 @status_message=nil, @headers=nil, @result=nil, @named_routes_configured=true, @host="www.example.com", @status=nil, @accept="text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5", @request_count=0, @controller=nil, @application=#<ActionController::Dispatcher:0xb72ccf88 @output=#<IO:0xb7d0a568>>, @remote_addr="127.0.0.1", @request=nil, @response=nil, @path=nil, @https=false, @cookies={}>
 
>> puts rs.routes
GET    /users(.:format)?                        {:action=>"index", :controller=>"users"}
POST   /users(.:format)?                        {:action=>"create", :controller=>"users"}
GET    /users/new(.:format)?                    {:action=>"new", :controller=>"users"}
GET    /users/:id/edit(.:format)?               {:action=>"edit", :controller=>"users"}
GET    /users/:id(.:format)?                    {:action=>"show", :controller=>"users"}
PUT    /users/:id(.:format)?                    {:action=>"update", :controller=>"users"}
DELETE /users/:id(.:format)?                    {:action=>"destroy", :controller=>"users"}
GET    /line_items(.:format)?                   {:action=>"index", :controller=>"line_items"}
POST   /line_items(.:format)?                   {:action=>"create", :controller=>"line_items"}
GET    /line_items/new(.:format)?               {:action=>"new", :controller=>"line_items"}
GET    /line_items/:id/edit(.:format)?          {:action=>"edit", :controller=>"line_items"}
GET    /line_items/:id(.:format)?               {:action=>"show", :controller=>"line_items"}
PUT    /line_items/:id(.:format)?               {:action=>"update", :controller=>"line_items"}
DELETE /line_items/:id(.:format)?               {:action=>"destroy", :controller=>"line_items"}
GET    /orders(.:format)?                       {:action=>"index", :controller=>"orders"}
POST   /orders(.:format)?                       {:action=>"create", :controller=>"orders"}
GET    /orders/new(.:format)?                   {:action=>"new", :controller=>"orders"}
GET    /orders/:id/edit(.:format)?              {:action=>"edit", :controller=>"orders"}
GET    /orders/:id(.:format)?                   {:action=>"show", :controller=>"orders"}
PUT    /orders/:id(.:format)?                   {:action=>"update", :controller=>"orders"}
DELETE /orders/:id(.:format)?                   {:action=>"destroy", :controller=>"orders"}
GET    /products(.:format)?                     {:action=>"index", :controller=>"products"}
POST   /products(.:format)?                     {:action=>"create", :controller=>"products"}
GET    /products/new(.:format)?                 {:action=>"new", :controller=>"products"}
GET    /products/:id/edit(.:format)?            {:action=>"edit", :controller=>"products"}
GET    /products/:id(.:format)?                 {:action=>"show", :controller=>"products"}
PUT    /products/:id(.:format)?                 {:action=>"update", :controller=>"products"}
DELETE /products/:id(.:format)?                 {:action=>"destroy", :controller=>"products"}
ANY    /:controller/:action/:id/                {}
ANY    /:controller/:action/:id(.:format)?      {}
GET    /users(.:format)?                        {:action=>"index", :controller=>"users"}
POST   /users(.:format)?                        {:action=>"create", :controller=>"users"}
GET    /users/new(.:format)?                    {:action=>"new", :controller=>"users"}
GET    /users/:id/edit(.:format)?               {:action=>"edit", :controller=>"users"}
GET    /users/:id(.:format)?                    {:action=>"show", :controller=>"users"}
PUT    /users/:id(.:format)?                    {:action=>"update", :controller=>"users"}
DELETE /users/:id(.:format)?                    {:action=>"destroy", :controller=>"users"}
GET    /line_items(.:format)?                   {:action=>"index", :controller=>"line_items"}
POST   /line_items(.:format)?                   {:action=>"create", :controller=>"line_items"}
GET    /line_items/new(.:format)?               {:action=>"new", :controller=>"line_items"}
GET    /line_items/:id/edit(.:format)?          {:action=>"edit", :controller=>"line_items"}
GET    /line_items/:id(.:format)?               {:action=>"show", :controller=>"line_items"}
PUT    /line_items/:id(.:format)?               {:action=>"update", :controller=>"line_items"}
DELETE /line_items/:id(.:format)?               {:action=>"destroy", :controller=>"line_items"}
GET    /orders(.:format)?                       {:action=>"index", :controller=>"orders"}
POST   /orders(.:format)?                       {:action=>"create", :controller=>"orders"}
GET    /orders/new(.:format)?                   {:action=>"new", :controller=>"orders"}
GET    /orders/:id/edit(.:format)?              {:action=>"edit", :controller=>"orders"}
GET    /orders/:id(.:format)?                   {:action=>"show", :controller=>"orders"}
PUT    /orders/:id(.:format)?                   {:action=>"update", :controller=>"orders"}
DELETE /orders/:id(.:format)?                   {:action=>"destroy", :controller=>"orders"}
GET    /products(.:format)?                     {:action=>"index", :controller=>"products"}
POST   /products(.:format)?                     {:action=>"create", :controller=>"products"}
GET    /products/new(.:format)?                 {:action=>"new", :controller=>"products"}
GET    /products/:id/edit(.:format)?            {:action=>"edit", :controller=>"products"}
GET    /products/:id(.:format)?                 {:action=>"show", :controller=>"products"}
PUT    /products/:id(.:format)?                 {:action=>"update", :controller=>"products"}
DELETE /products/:id(.:format)?                 {:action=>"destroy", :controller=>"products"}
ANY    /:controller/:action/:id/                {}
ANY    /:controller/:action/:id(.:format)?      {}
=> nil
>> rs.recognize_path "/store"
=> {:action=>"index", :controller=>"store"}
>> rs.recognize_path "/store/add_to_cart/1"
=> {:action=>"add_to_cart", :id=>"1", :controller=>"store"}
>> rs.recognize_path "/store/add_to_cart/1.xml"
=> {:format=>"xml", :action=>"add_to_cart", :id=>"1", :controller=>"store"}
>> rs.generate :controller => :store
=> "/store"
>> rs.generate :controller => :store, :id => 123
=> "/store/index/123"
>> rs.recognize_path "/coupon/show/1"
=> {:action=>"show", :id=>"1", :controller=>"coupon"}
>> load "config/routes.rb"
=> []
>> rs.recognize_path "/coupon/show/1"
=> {:action=>"show", :id=>"1", :controller=>"coupon"}
>> app.url_for :controller => :store, :action => :display, :id => 123
=> "http://www.example.com/store/display/123"
 
ruby -rubygems /home/rubys/git/rails/railties/bin/rails view
      create  
      create  app/controllers
      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
      create  config/initializers
      create  config/locales
      create  db
      create  doc
      create  lib
      create  lib/tasks
      create  log
      create  public/images
      create  public/javascripts
      create  public/stylesheets
      create  script/performance
      create  test/fixtures
      create  test/functional
      create  test/integration
      create  test/performance
      create  test/unit
      create  vendor
      create  vendor/plugins
      create  tmp/sessions
      create  tmp/sockets
      create  tmp/cache
      create  tmp/pids
      create  Rakefile
      create  README
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  config/database.yml
      create  config/routes.rb
      create  config/locales/en.yml
      create  db/seeds.rb
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/new_rails_defaults.rb
      create  config/initializers/session_store.rb
      create  config/initializers/cookie_verification_secret.rb
      create  config/environment.rb
      create  config/boot.rb
      create  config/environments/production.rb
      create  config/environments/development.rb
      create  config/environments/test.rb
      create  script/about
      create  script/console
      create  script/dbconsole
      create  script/destroy
      create  script/generate
      create  script/runner
      create  script/server
      create  script/plugin
      create  script/performance/benchmarker
      create  script/performance/profiler
      create  test/test_helper.rb
      create  test/performance/browsing_test.rb
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/index.html
      create  public/favicon.ico
      create  public/robots.txt
      create  public/images/rails.png
      create  public/javascripts/prototype.js
      create  public/javascripts/effects.js
      create  public/javascripts/dragdrop.js
      create  public/javascripts/controls.js
      create  public/javascripts/application.js
      create  doc/README_FOR_APP
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log
cp -v /home/rubys/git/awdwr/data/code/e1/views/app/controllers/*.rb app/controllers
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/array_controller.rb' -> `app/controllers/array_controller.rb'
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/article_controller.rb' -> `app/controllers/article_controller.rb'
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/blog1_controller.rb' -> `app/controllers/blog1_controller.rb'
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/blog2_controller.rb' -> `app/controllers/blog2_controller.rb'
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/blog_controller.rb' -> `app/controllers/blog_controller.rb'
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/builder_controller.rb' -> `app/controllers/builder_controller.rb'
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/form_controller.rb' -> `app/controllers/form_controller.rb'
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/form_for_controller.rb' -> `app/controllers/form_for_controller.rb'
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/pager_controller.rb' -> `app/controllers/pager_controller.rb'
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/partial_controller.rb' -> `app/controllers/partial_controller.rb'
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/products_controller.rb' -> `app/controllers/products_controller.rb'
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/rhtml_controller.rb' -> `app/controllers/rhtml_controller.rb'
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/test_controller.rb' -> `app/controllers/test_controller.rb'
`/home/rubys/git/awdwr/data/code/e1/views/app/controllers/upload_controller.rb' -> `app/controllers/upload_controller.rb'
irb e1/routing/config2/routes_for_blog.rb
>> require 'rubygems'
=> false
>> require 'action_controller'
=> true
 
>> ActionController::Base.session_store = nil
=> nil
>> ActionController::Routing.use_controllers! [ "article", "blog" ]
=> ["article", "blog"]
>> rs = ActionController::Routing::Routes
=> #<ActionController::Routing::RouteSet:0xb79c2900 @named_routes=#<ActionController::Routing::RouteSet::NamedRouteCollection:0xb79af6ac @module=#<Module:0xb79af454>, @routes={}, @helpers=[]>, @routes=[], @configuration_files=[]>
>> app = ActionController::Integration::Session.new
=> #<ActionController::Integration::Session:0xb77b06bc @accept="text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5", @https=false, @application=#<ActionController::Dispatcher:0xb77a6ff4 @output=#<IO:0xb7da656c>, @app=#<Rack::Lock:0xb779b03c @lock=#<Mutex:0xb779af88>, @app=#<ActionController::Failsafe:0xb779b118 @app=#<ActionController::ParamsParser:0xb779b1f4 @app=#<Rack::MethodOverride:0xb779b2d0 @app=#<Rack::Head:0xb779b3ac @app=#<ActionController::StringCoercion:0xb779b62c @app=#<Proc:0xb77ad584@/home/rubys/git/awdwr/work-235/view/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:130>>>>>>>>, @remote_addr="127.0.0.1", @status_message=nil, @headers=nil, @named_routes_configured=true, @controller=nil, @response=nil, @result=nil, @path=nil, @cookies={}, @request_count=0, @host="www.example.com", @request=nil, @status=nil>
 
?> ActionController::Routing::Routes.draw do |map| 
 
?>   # Straight 'http://my.app/blog/' displays the index 
?>   map.connect "blog/", 
?>               :controller => "blog", 
?>               :action => "index" 
 
?>   # Return articles for a year, year/month, or year/month/day 
?>   map.connect "blog/:year/:month/:day", 
?>               :controller => "blog", 
?>               :action => "show_date", 
?>               :requirements => { :year => /(19|20)\d\d/,
?>                                  :month => /[01]?\d/, 
?>                                  :day => /[0-3]?\d/}, 
?>               :day => nil, 
?>               :month => nil 
 
>>   # Show an article identified by an id 
?>   map.connect "blog/show/:id", 
?>               :controller => "blog", 
?>               :action => "show", 
?>               :id => /\d+/ 
 
>>   # Regular Rails routing for admin stuff 
?>   map.connect "blog/:controller/:action/:id" 
 
>>   # Catchall so we can gracefully handle badly formed requests 
?>   map.connect "*anything", 
?>               :controller => "blog", 
?>               :action => "unknown_request" 
>> end
=> [ActionController::Base, ActionView::Base]
 
>> rs.recognize_path "/blog"
=> {:action=>"index", :controller=>"blog"}
>> rs.recognize_path "/blog/show/123"
=> {:action=>"show", :controller=>"blog", :id=>"123"}
>> rs.recognize_path "/blog/2004"
=> {:action=>"show_date", :year=>"2004", :controller=>"blog"}
>> rs.recognize_path "/blog/2004/12"
=> {:month=>"12", :action=>"show_date", :year=>"2004", :controller=>"blog"}
>> rs.recognize_path "/blog/2004/12/25"
=> {:month=>"12", :action=>"show_date", :year=>"2004", :controller=>"blog", :day=>"25"}
>> rs.recognize_path "/blog/article/edit/123"
=> {:action=>"edit", :controller=>"article", :id=>"123"}
>> rs.recognize_path "/blog/article/show_stats"
=> {:action=>"show_stats", :controller=>"article"}
>> rs.recognize_path "/blog/wibble"
=> {:action=>"unknown_request", :anything=>["blog", "wibble"], :controller=>"blog"}
>> rs.recognize_path "/junk"
=> {:action=>"unknown_request", :anything=>["junk"], :controller=>"blog"}
 
>> last_request = rs.recognize_path "/blog/2006/07/28"
=> {:month=>"07", :action=>"show_date", :year=>"2006", :controller=>"blog", :day=>"28"}
>> rs.generate({:day => 25}, last_request)
=> "/blog/2006/07/25"
>> rs.generate({:year => 2005}, last_request)
=> "/blog/2005"
 
>> app.url_for :controller => 'blog', :action => 'show_date', :year => 2002
=> "http://www.example.com/blog/2002"
>> app.url_for :controller => 'blog', :action => 'show_date', :overwrite_params => {:year => "2002" }
=> "http://www.example.com/blog/2002"
 

21.2 Routing Requests 21 Action Controller: Routing and URLs