Your Pragmatic Cart
- 1 × Pragmatic Project Automation
edit app/models/cart_item.rb
class CartItem
attr_reader :product, :quantity
def initialize(product)
@product = product
@quantity = 1
end
def increment_quantity
@quantity += 1
end
def title
@product.title
end
def price
@product.price * @quantity
end
end
edit app/models/cart.rb
def add_product(product)
current_item = @items.find {|item| item.product == product}
if current_item
current_item.increment_quantity
else
@items << CartItem.new(product)
end
end
edit app/views/store/add_to_cart.html.erb
<h2>Your Pragmatic Cart</h2>
<ul>
<% for item in @cart.items %>
<li><%= item.quantity %> × <%= item.title %></li>
<% end %>
</ul>
get /store/add_to_cart/2
undefined method `product' for #<Product:0x00000003bd66f0>
Rails.root: /home/rubys/git/awdwr/work-191/depot
app/models/cart.rb:10:in `block in add_product'
app/models/cart.rb:10:in `each'
app/models/cart.rb:10:in `find'
app/models/cart.rb:10:in `add_product'
app/controllers/store_controller.rb:11:in `add_to_cart'
/home/rubys/git/rails/activemodel/lib/active_model/attribute_methods.rb:343:in `method_missing'
/home/rubys/git/rails/activerecord/lib/active_record/attribute_methods.rb:36:in `method_missing'
/home/rubys/git/rails/activerecord/lib/active_record/attribute_methods.rb:34:in `method_missing'
/home/rubys/git/rails/actionpack/lib/action_controller/base.rb:44:in `send'
/home/rubys/git/rails/actionpack/lib/action_controller/base.rb:44:in `send_action'
/home/rubys/git/rails/actionpack/lib/abstract_controller/base.rb:145:in `process_action'
/home/rubys/git/rails/actionpack/lib/abstract_controller/callbacks.rb:18:in `block in process_action'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:433:in `_run__1290671107__process_action__408796735__callbacks'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:423:in `_run_process_action_callbacks'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:88:in `run_callbacks'
/home/rubys/git/rails/actionpack/lib/abstract_controller/callbacks.rb:17:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/rendering.rb:12:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/compatibility.rb:66:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:29:in `block in process_action'
/home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:18:in `instrument'
/home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:49:in `instrument'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:28:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/rescue.rb:8:in `process_action'
/home/rubys/git/rails/actionpack/lib/abstract_controller/base.rb:115:in `process'
/home/rubys/git/rails/actionpack/lib/action_controller/metal.rb:64:in `dispatch'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/rack_delegation.rb:19:in `dispatch'
/home/rubys/git/rails/actionpack/lib/action_controller/metal.rb:89:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/routing/route_set.rb:27:in `call'
rack-mount (0.4.7) lib/rack/mount/recognition/route_set.rb:70:in `block in call'
rack-mount (0.4.7) lib/rack/mount/recognition/code_generation.rb:97:in `block in recognize'
rack-mount (0.4.7) lib/rack/mount/recognition/code_generation.rb:73:in `optimized_each'
rack-mount (0.4.7) lib/rack/mount/recognition/code_generation.rb:96:in `recognize'
rack-mount (0.4.7) lib/rack/mount/recognition/route_set.rb:65:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/routing/route_set.rb:420:in `call'
/home/rubys/git/rails/activerecord/lib/active_record/query_cache.rb:29:in `block in call'
/home/rubys/git/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
/home/rubys/git/rails/activerecord/lib/active_record/query_cache.rb:9:in `cache'
/home/rubys/git/rails/activerecord/lib/active_record/query_cache.rb:28:in `call'
/home/rubys/git/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:365:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/head.rb:14:in `call'
rack (1.1.0) lib/rack/methodoverride.rb:24:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/params_parser.rb:20:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/flash.rb:167:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/session/abstract_store.rb:150:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/cookies.rb:205:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/callbacks.rb:46:in `block in call'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:429:in `_run_call_callbacks'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:88:in `run_callbacks'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/callbacks.rb:44:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/show_exceptions.rb:62:in `call'
/home/rubys/git/rails/railties/lib/rails/rack/logger.rb:13:in `call'
rack (1.1.0) lib/rack/runtime.rb:17:in `call'
rack (1.1.0) lib/rack/lock.rb:11:in `block in call'
<internal:prelude>:8:in `synchronize'
rack (1.1.0) lib/rack/lock.rb:11:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/static.rb:30:in `call'
/home/rubys/git/rails/railties/lib/rails/application.rb:95:in `call'
/home/rubys/git/rails/railties/lib/rails/application.rb:41:in `method_missing'
/home/rubys/git/rails/railties/lib/rails/rack/log_tailer.rb:15:in `call'
rack (1.1.0) lib/rack/content_length.rb:13:in `call'
rack (1.1.0) lib/rack/handler/webrick.rb:48:in `service'
/home/rubys/.rvm/ruby-1.9.1-p376/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
/home/rubys/.rvm/ruby-1.9.1-p376/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
/home/rubys/.rvm/ruby-1.9.1-p376/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
/home/rubys/git/rails/activemodel/lib/active_model/attribute_methods.rb:343:in `method_missing'
/home/rubys/git/rails/activerecord/lib/active_record/attribute_methods.rb:36:in `method_missing'
/home/rubys/git/rails/activerecord/lib/active_record/attribute_methods.rb:34:in `method_missing'
app/models/cart.rb:10:in `block in add_product'
app/models/cart.rb:10:in `each'
app/models/cart.rb:10:in `find'
app/models/cart.rb:10:in `add_product'
app/controllers/store_controller.rb:11:in `add_to_cart'
/home/rubys/git/rails/actionpack/lib/action_controller/base.rb:44:in `send'
/home/rubys/git/rails/actionpack/lib/action_controller/base.rb:44:in `send_action'
/home/rubys/git/rails/actionpack/lib/abstract_controller/base.rb:145:in `process_action'
/home/rubys/git/rails/actionpack/lib/abstract_controller/callbacks.rb:18:in `block in process_action'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:433:in `_run__1290671107__process_action__408796735__callbacks'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:423:in `_run_process_action_callbacks'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:88:in `run_callbacks'
/home/rubys/git/rails/actionpack/lib/abstract_controller/callbacks.rb:17:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/rendering.rb:12:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/compatibility.rb:66:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:29:in `block in process_action'
/home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:18:in `instrument'
/home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:49:in `instrument'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:28:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/rescue.rb:8:in `process_action'
/home/rubys/git/rails/actionpack/lib/abstract_controller/base.rb:115:in `process'
/home/rubys/git/rails/actionpack/lib/action_controller/metal.rb:64:in `dispatch'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/rack_delegation.rb:19:in `dispatch'
/home/rubys/git/rails/actionpack/lib/action_controller/metal.rb:89:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/routing/route_set.rb:27:in `call'
rack-mount (0.4.7) lib/rack/mount/recognition/route_set.rb:70:in `block in call'
rack-mount (0.4.7) lib/rack/mount/recognition/code_generation.rb:97:in `block in recognize'
rack-mount (0.4.7) lib/rack/mount/recognition/code_generation.rb:73:in `optimized_each'
rack-mount (0.4.7) lib/rack/mount/recognition/code_generation.rb:96:in `recognize'
rack-mount (0.4.7) lib/rack/mount/recognition/route_set.rb:65:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/routing/route_set.rb:420:in `call'
/home/rubys/git/rails/activerecord/lib/active_record/query_cache.rb:29:in `block in call'
/home/rubys/git/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
/home/rubys/git/rails/activerecord/lib/active_record/query_cache.rb:9:in `cache'
/home/rubys/git/rails/activerecord/lib/active_record/query_cache.rb:28:in `call'
/home/rubys/git/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:365:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/head.rb:14:in `call'
rack (1.1.0) lib/rack/methodoverride.rb:24:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/params_parser.rb:20:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/flash.rb:167:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/session/abstract_store.rb:150:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/cookies.rb:205:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/callbacks.rb:46:in `block in call'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:429:in `_run_call_callbacks'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:88:in `run_callbacks'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/callbacks.rb:44:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/show_exceptions.rb:62:in `call'
/home/rubys/git/rails/railties/lib/rails/rack/logger.rb:13:in `call'
rack (1.1.0) lib/rack/runtime.rb:17:in `call'
rack (1.1.0) lib/rack/lock.rb:11:in `block in call'
<internal:prelude>:8:in `synchronize'
rack (1.1.0) lib/rack/lock.rb:11:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/static.rb:30:in `call'
/home/rubys/git/rails/railties/lib/rails/application.rb:95:in `call'
/home/rubys/git/rails/railties/lib/rails/application.rb:41:in `method_missing'
/home/rubys/git/rails/railties/lib/rails/rack/log_tailer.rb:15:in `call'
rack (1.1.0) lib/rack/content_length.rb:13:in `call'
rack (1.1.0) lib/rack/handler/webrick.rb:48:in `service'
/home/rubys/.rvm/ruby-1.9.1-p376/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
/home/rubys/.rvm/ruby-1.9.1-p376/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
/home/rubys/.rvm/ruby-1.9.1-p376/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
Parameters:
{"id"=>"2"}
cart: #<Cart:0x00000003bd67d0 @items=[#<Product id: 2, title: "Pragmatic Project Automation", description: "<p>\n <em>Pragmatic Project Automation</em> sh...", image_url: "/images/auto.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:3f417d0,'0.2995E2',18(18)>>, #<Product id: 3, title: "Pragmatic Version Control", description: "<p>\n This book is a recipe-based approach t...", image_url: "/images/svn.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:3f407a0,'0.285E2',18(18)>>]>
GATEWAY_INTERFACE: "CGI/1.1" HTTP_ACCEPT: "text/html" HTTP_COOKIE: "_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly" HTTP_HOST: "localhost:3000" HTTP_USER_AGENT: "Ruby" HTTP_VERSION: "HTTP/1.1" PATH_INFO: "/store/add_to_cart/2" QUERY_STRING: "" REMOTE_ADDR: "127.0.0.1" REMOTE_HOST: "localhost" REQUEST_METHOD: "GET" REQUEST_PATH: "/" REQUEST_URI: "http://localhost:3000/store/add_to_cart/2" SCRIPT_NAME: "" SERVER_NAME: "localhost" SERVER_PORT: "3000" SERVER_PROTOCOL: "HTTP/1.1" SERVER_SOFTWARE: "WEBrick/1.3.1 (Ruby/1.9.1/2009-12-07)" action_controller.instance: #<StoreController:0x00000003e55210 @_headers={}, @_formats=[:html], @_request=#<ActionDispatch::Request:0x00000003e55168 @env={"GATEWAY_INTERFACE"=>"CGI/1.1", "PATH_INFO"=>"/store/add_to_cart/2", "QUERY_STRING"=>"", "REMOTE_ADDR"=>"127.0.0.1", "REMOTE_HOST"=>"localhost", "REQUEST_METHOD"=>"GET", "REQUEST_URI"=>"http://localhost:3000/store/add_to_cart/2", "SCRIPT_NAME"=>"", "SERVER_NAME"=>"localhost", "SERVER_PORT"=>"3000", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"WEBrick/1.3.1 (Ruby/1.9.1/2009-12-07)", "HTTP_ACCEPT"=>"text/html", "HTTP_USER_AGENT"=>"Ruby", "HTTP_COOKIE"=>"_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly", "HTTP_HOST"=>"localhost:3000", "rack.version"=>[1, 1], "rack.input"=>#<StringIO:0x00000000fa5d50>, "rack.errors"=>#<IO:<STDERR>>, "rack.multithread"=>false, "rack.multiprocess"=>false, "rack.run_once"=>false, "rack.url_scheme"=>"http", "HTTP_VERSION"=>"HTTP/1.1", "REQUEST_PATH"=>"/", "action_dispatch.parameter_filter"=>[:password], "rack.session"=>{"cart"=>#<Cart:0x00000003bd67d0 @items=[#<Product id: 2, title: "Pragmatic Project Automation", description: "<p>\n <em>Pragmatic Project Automation</em> sh...", image_url: "/images/auto.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:3eff350,'0.2995E2',18(18)>>, #<Product id: 3, title: "Pragmatic Version Control", description: "<p>\n This book is a recipe-based approach t...", image_url: "/images/svn.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:3efe2e8,'0.285E2',18(18)>>]>}, "rack.session.options"=>{:key=>"_depot_session", :path=>"/", :domain=>nil, :expire_after=>nil, :secure=>false, :httponly=>true, :cookie_only=>true, :secret=>"8c3ecf1db82a2129015f77a059189e070ca50a2c6360e3f5f53bbb9a93bb9cb2a3b31b354d307d44c7b7eb1c9d5a89eea1a67f70aa846681fdfe4c9edb324628", :id=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f"}, "rack.request.cookie_string"=>"_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly", "rack.request.cookie_hash"=>{"_depot_session"=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f", "path"=>"/", "HttpOnly"=>nil}, "rack.session.record"=>#<ActiveRecord::SessionStore::Session id: 1, session_id: "BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUk...", data: "BAh7BkkiCWNhcnQGOg1lbmNvZGluZyINVVMtQVNDSUlvOglDYXJ...", created_at: "2010-02-11 19:12:23", updated_at: "2010-02-11 19:12:24">, "action_dispatch.request.path_parameters"=>{:controller=>"store", :action=>"add_to_cart", :id=>"2"}, "action_controller.instance"=>#<StoreController:0x00000003e55210 ...>, "action_dispatch.request.content_type"=>nil, "action_dispatch.request.request_parameters"=>{}, "rack.request.query_string"=>"", "rack.request.query_hash"=>{}, "action_dispatch.request.query_parameters"=>{}, "action_dispatch.request.parameters"=>{"controller"=>"store", "action"=>"add_to_cart", "id"=>"2"}, "action_dispatch.request.accepts"=>[#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">], "action_dispatch.request.formats"=>[#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">]}, @filtered_parameters={"controller"=>"store", "action"=>"add_to_cart", "id"=>"2"}>, @_response=#<ActionDispatch::Response:0x00000003e55130 @status=200, @header={}, @cache_control={}, @writer=#<Proc:0x00000003e55050@/home/rubys/git/rails/actionpack/lib/action_dispatch/http/response.rb:47 (lambda)>, @block=nil, @length=0, @cookie=[], @body=[], @sending_file=false, @blank=false, @etag=nil, @request=#<ActionDispatch::Request:0x00000003e55168 @env={"GATEWAY_INTERFACE"=>"CGI/1.1", "PATH_INFO"=>"/store/add_to_cart/2", "QUERY_STRING"=>"", "REMOTE_ADDR"=>"127.0.0.1", "REMOTE_HOST"=>"localhost", "REQUEST_METHOD"=>"GET", "REQUEST_URI"=>"http://localhost:3000/store/add_to_cart/2", "SCRIPT_NAME"=>"", "SERVER_NAME"=>"localhost", "SERVER_PORT"=>"3000", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"WEBrick/1.3.1 (Ruby/1.9.1/2009-12-07)", "HTTP_ACCEPT"=>"text/html", "HTTP_USER_AGENT"=>"Ruby", "HTTP_COOKIE"=>"_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly", "HTTP_HOST"=>"localhost:3000", "rack.version"=>[1, 1], "rack.input"=>#<StringIO:0x00000000fa5d50>, "rack.errors"=>#<IO:<STDERR>>, "rack.multithread"=>false, "rack.multiprocess"=>false, "rack.run_once"=>false, "rack.url_scheme"=>"http", "HTTP_VERSION"=>"HTTP/1.1", "REQUEST_PATH"=>"/", "action_dispatch.parameter_filter"=>[:password], "rack.session"=>{"cart"=>#<Cart:0x00000003bd67d0 @items=[#<Product id: 2, title: "Pragmatic Project Automation", description: "<p>\n <em>Pragmatic Project Automation</em> sh...", image_url: "/images/auto.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:3ef9888,'0.2995E2',18(18)>>, #<Product id: 3, title: "Pragmatic Version Control", description: "<p>\n This book is a recipe-based approach t...", image_url: "/images/svn.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:3ef8628,'0.285E2',18(18)>>]>}, "rack.session.options"=>{:key=>"_depot_session", :path=>"/", :domain=>nil, :expire_after=>nil, :secure=>false, :httponly=>true, :cookie_only=>true, :secret=>"8c3ecf1db82a2129015f77a059189e070ca50a2c6360e3f5f53bbb9a93bb9cb2a3b31b354d307d44c7b7eb1c9d5a89eea1a67f70aa846681fdfe4c9edb324628", :id=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f"}, "rack.request.cookie_string"=>"_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly", "rack.request.cookie_hash"=>{"_depot_session"=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f", "path"=>"/", "HttpOnly"=>nil}, "rack.session.record"=>#<ActiveRecord::SessionStore::Session id: 1, session_id: "BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUk...", data: "BAh7BkkiCWNhcnQGOg1lbmNvZGluZyINVVMtQVNDSUlvOglDYXJ...", created_at: "2010-02-11 19:12:23", updated_at: "2010-02-11 19:12:24">, "action_dispatch.request.path_parameters"=>{:controller=>"store", :action=>"add_to_cart", :id=>"2"}, "action_controller.instance"=>#<StoreController:0x00000003e55210 ...>, "action_dispatch.request.content_type"=>nil, "action_dispatch.request.request_parameters"=>{}, "rack.request.query_string"=>"", "rack.request.query_hash"=>{}, "action_dispatch.request.query_parameters"=>{}, "action_dispatch.request.parameters"=>{"controller"=>"store", "action"=>"add_to_cart", "id"=>"2"}, "action_dispatch.request.accepts"=>[#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">], "action_dispatch.request.formats"=>[#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">]}, @filtered_parameters={"controller"=>"store", "action"=>"add_to_cart", "id"=>"2"}>>, @_env={"GATEWAY_INTERFACE"=>"CGI/1.1", "PATH_INFO"=>"/store/add_to_cart/2", "QUERY_STRING"=>"", "REMOTE_ADDR"=>"127.0.0.1", "REMOTE_HOST"=>"localhost", "REQUEST_METHOD"=>"GET", "REQUEST_URI"=>"http://localhost:3000/store/add_to_cart/2", "SCRIPT_NAME"=>"", "SERVER_NAME"=>"localhost", "SERVER_PORT"=>"3000", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"WEBrick/1.3.1 (Ruby/1.9.1/2009-12-07)", "HTTP_ACCEPT"=>"text/html", "HTTP_USER_AGENT"=>"Ruby", "HTTP_COOKIE"=>"_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly", "HTTP_HOST"=>"localhost:3000", "rack.version"=>[1, 1], "rack.input"=>#<StringIO:0x00000000fa5d50>, "rack.errors"=>#<IO:<STDERR>>, "rack.multithread"=>false, "rack.multiprocess"=>false, "rack.run_once"=>false, "rack.url_scheme"=>"http", "HTTP_VERSION"=>"HTTP/1.1", "REQUEST_PATH"=>"/", "action_dispatch.parameter_filter"=>[:password], "rack.session"=>{"cart"=>#<Cart:0x00000003bd67d0 @items=[#<Product id: 2, title: "Pragmatic Project Automation", description: "<p>\n <em>Pragmatic Project Automation</em> sh...", image_url: "/images/auto.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:3eac2d8,'0.2995E2',18(18)>>, #<Product id: 3, title: "Pragmatic Version Control", description: "<p>\n This book is a recipe-based approach t...", image_url: "/images/svn.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:3eab2e0,'0.285E2',18(18)>>]>}, "rack.session.options"=>{:key=>"_depot_session", :path=>"/", :domain=>nil, :expire_after=>nil, :secure=>false, :httponly=>true, :cookie_only=>true, :secret=>"8c3ecf1db82a2129015f77a059189e070ca50a2c6360e3f5f53bbb9a93bb9cb2a3b31b354d307d44c7b7eb1c9d5a89eea1a67f70aa846681fdfe4c9edb324628", :id=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f"}, "rack.request.cookie_string"=>"_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly", "rack.request.cookie_hash"=>{"_depot_session"=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f", "path"=>"/", "HttpOnly"=>nil}, "rack.session.record"=>#<ActiveRecord::SessionStore::Session id: 1, session_id: "BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUk...", data: "BAh7BkkiCWNhcnQGOg1lbmNvZGluZyINVVMtQVNDSUlvOglDYXJ...", created_at: "2010-02-11 19:12:23", updated_at: "2010-02-11 19:12:24">, "action_dispatch.request.path_parameters"=>{:controller=>"store", :action=>"add_to_cart", :id=>"2"}, "action_controller.instance"=>#<StoreController:0x00000003e55210 ...>, "action_dispatch.request.content_type"=>nil, "action_dispatch.request.request_parameters"=>{}, "rack.request.query_string"=>"", "rack.request.query_hash"=>{}, "action_dispatch.request.query_parameters"=>{}, "action_dispatch.request.parameters"=>{"controller"=>"store", "action"=>"add_to_cart", "id"=>"2"}, "action_dispatch.request.accepts"=>[#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">], "action_dispatch.request.formats"=>[#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">]}, @_action_name="add_to_cart", @_response_body=nil, @_view_context=#<Class>, @template=#<Class>, @_params={"controller"=>"store", "action"=>"add_to_cart", "id"=>"2"}, @cart=#<Cart:0x00000003bd67d0 @items=[#<Product id: 2, title: "Pragmatic Project Automation", description: "<p>\n <em>Pragmatic Project Automation</em> sh...", image_url: "/images/auto.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:3e9d430,'0.2995E2',18(18)>>, #<Product id: 3, title: "Pragmatic Version Control", description: "<p>\n This book is a recipe-based approach t...", image_url: "/images/svn.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:3e9c470,'0.285E2',18(18)>>]>> action_dispatch.parameter_filter: [:password] action_dispatch.request.accepts: [#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">] action_dispatch.request.content_type: nil action_dispatch.request.formats: [#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">] action_dispatch.request.parameters: {"controller"=>"store", "action"=>"add_to_cart", "id"=>"2"} action_dispatch.request.path_parameters: {:controller=>"store", :action=>"add_to_cart", :id=>"2"} action_dispatch.request.query_parameters: {} action_dispatch.request.request_parameters: {} rack.errors: #<IO:<STDERR>> rack.input: #<StringIO:0x00000000fa5d50> rack.multiprocess: false rack.multithread: false rack.request.cookie_hash: {"_depot_session"=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f", "path"=>"/", "HttpOnly"=>nil} rack.request.cookie_string: "_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly" rack.request.query_hash: {} rack.request.query_string: "" rack.run_once: false rack.session: {"cart"=>#<Cart:0x00000003bd67d0 @items=[#<Product id: 2, title: "Pragmatic Project Automation", description: "<p>\n <em>Pragmatic Project Automation</em> sh...", image_url: "/images/auto.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:3e8ffc8,'0.2995E2',18(18)>>, #<Product id: 3, title: "Pragmatic Version Control", description: "<p>\n This book is a recipe-based approach t...", image_url: "/images/svn.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:3e8f008,'0.285E2',18(18)>>]>} rack.session.options: {:key=>"_depot_session", :path=>"/", :domain=>nil, :expire_after=>nil, :secure=>false, :httponly=>true, :cookie_only=>true, :secret=>"8c3ecf1db82a2129015f77a059189e070ca50a2c6360e3f5f53bbb9a93bb9cb2a3b31b354d307d44c7b7eb1c9d5a89eea1a67f70aa846681fdfe4c9edb324628", :id=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f"} rack.session.record: #<ActiveRecord::SessionStore::Session id: 1, session_id: "BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUk...", data: "BAh7BkkiCWNhcnQGOg1lbmNvZGluZyINVVMtQVNDSUlvOglDYXJ...", created_at: "2010-02-11 19:12:23", updated_at: "2010-02-11 19:12:24"> rack.url_scheme: "http" rack.version: [1, 1]
Headers:
None
rake db:sessions:clear
(in /home/rubys/git/awdwr/work-191/depot)
get /store/add_to_cart/2
get /store/add_to_cart/2
get /store/add_to_cart/3
get /store/add_to_cart/wibble
Couldn't find Product with ID=wibble
Rails.root: /home/rubys/git/awdwr/work-191/depot
app/controllers/store_controller.rb:9:in `add_to_cart'
/home/rubys/git/rails/activerecord/lib/active_record/relation/finder_methods.rb:265:in `find_one'
/home/rubys/git/rails/activerecord/lib/active_record/relation/finder_methods.rb:252:in `find_with_ids'
/home/rubys/git/rails/activerecord/lib/active_record/relation/finder_methods.rb:99:in `find'
/home/rubys/git/rails/activerecord/lib/active_record/base.rb:560:in `find'
/home/rubys/git/rails/actionpack/lib/action_controller/base.rb:44:in `send'
/home/rubys/git/rails/actionpack/lib/action_controller/base.rb:44:in `send_action'
/home/rubys/git/rails/actionpack/lib/abstract_controller/base.rb:145:in `process_action'
/home/rubys/git/rails/actionpack/lib/abstract_controller/callbacks.rb:18:in `block in process_action'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:433:in `_run__1290671107__process_action__408796735__callbacks'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:423:in `_run_process_action_callbacks'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:88:in `run_callbacks'
/home/rubys/git/rails/actionpack/lib/abstract_controller/callbacks.rb:17:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/rendering.rb:12:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/compatibility.rb:66:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:29:in `block in process_action'
/home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:18:in `instrument'
/home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:49:in `instrument'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:28:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/rescue.rb:8:in `process_action'
/home/rubys/git/rails/actionpack/lib/abstract_controller/base.rb:115:in `process'
/home/rubys/git/rails/actionpack/lib/action_controller/metal.rb:64:in `dispatch'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/rack_delegation.rb:19:in `dispatch'
/home/rubys/git/rails/actionpack/lib/action_controller/metal.rb:89:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/routing/route_set.rb:27:in `call'
rack-mount (0.4.7) lib/rack/mount/recognition/route_set.rb:70:in `block in call'
rack-mount (0.4.7) lib/rack/mount/recognition/code_generation.rb:97:in `block in recognize'
rack-mount (0.4.7) lib/rack/mount/recognition/code_generation.rb:73:in `optimized_each'
rack-mount (0.4.7) lib/rack/mount/recognition/code_generation.rb:96:in `recognize'
rack-mount (0.4.7) lib/rack/mount/recognition/route_set.rb:65:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/routing/route_set.rb:420:in `call'
/home/rubys/git/rails/activerecord/lib/active_record/query_cache.rb:29:in `block in call'
/home/rubys/git/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
/home/rubys/git/rails/activerecord/lib/active_record/query_cache.rb:9:in `cache'
/home/rubys/git/rails/activerecord/lib/active_record/query_cache.rb:28:in `call'
/home/rubys/git/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:365:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/head.rb:14:in `call'
rack (1.1.0) lib/rack/methodoverride.rb:24:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/params_parser.rb:20:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/flash.rb:167:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/session/abstract_store.rb:150:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/cookies.rb:205:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/callbacks.rb:46:in `block in call'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:429:in `_run_call_callbacks'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:88:in `run_callbacks'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/callbacks.rb:44:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/show_exceptions.rb:62:in `call'
/home/rubys/git/rails/railties/lib/rails/rack/logger.rb:13:in `call'
rack (1.1.0) lib/rack/runtime.rb:17:in `call'
rack (1.1.0) lib/rack/lock.rb:11:in `block in call'
<internal:prelude>:8:in `synchronize'
rack (1.1.0) lib/rack/lock.rb:11:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/static.rb:30:in `call'
/home/rubys/git/rails/railties/lib/rails/application.rb:95:in `call'
/home/rubys/git/rails/railties/lib/rails/application.rb:41:in `method_missing'
/home/rubys/git/rails/railties/lib/rails/rack/log_tailer.rb:15:in `call'
rack (1.1.0) lib/rack/content_length.rb:13:in `call'
rack (1.1.0) lib/rack/handler/webrick.rb:48:in `service'
/home/rubys/.rvm/ruby-1.9.1-p376/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
/home/rubys/.rvm/ruby-1.9.1-p376/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
/home/rubys/.rvm/ruby-1.9.1-p376/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
/home/rubys/git/rails/activerecord/lib/active_record/relation/finder_methods.rb:265:in `find_one'
/home/rubys/git/rails/activerecord/lib/active_record/relation/finder_methods.rb:252:in `find_with_ids'
/home/rubys/git/rails/activerecord/lib/active_record/relation/finder_methods.rb:99:in `find'
/home/rubys/git/rails/activerecord/lib/active_record/base.rb:560:in `find'
app/controllers/store_controller.rb:9:in `add_to_cart'
/home/rubys/git/rails/actionpack/lib/action_controller/base.rb:44:in `send'
/home/rubys/git/rails/actionpack/lib/action_controller/base.rb:44:in `send_action'
/home/rubys/git/rails/actionpack/lib/abstract_controller/base.rb:145:in `process_action'
/home/rubys/git/rails/actionpack/lib/abstract_controller/callbacks.rb:18:in `block in process_action'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:433:in `_run__1290671107__process_action__408796735__callbacks'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:423:in `_run_process_action_callbacks'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:88:in `run_callbacks'
/home/rubys/git/rails/actionpack/lib/abstract_controller/callbacks.rb:17:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/rendering.rb:12:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/compatibility.rb:66:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:29:in `block in process_action'
/home/rubys/git/rails/activesupport/lib/active_support/notifications/instrumenter.rb:18:in `instrument'
/home/rubys/git/rails/activesupport/lib/active_support/notifications.rb:49:in `instrument'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/instrumentation.rb:28:in `process_action'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/rescue.rb:8:in `process_action'
/home/rubys/git/rails/actionpack/lib/abstract_controller/base.rb:115:in `process'
/home/rubys/git/rails/actionpack/lib/action_controller/metal.rb:64:in `dispatch'
/home/rubys/git/rails/actionpack/lib/action_controller/metal/rack_delegation.rb:19:in `dispatch'
/home/rubys/git/rails/actionpack/lib/action_controller/metal.rb:89:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/routing/route_set.rb:27:in `call'
rack-mount (0.4.7) lib/rack/mount/recognition/route_set.rb:70:in `block in call'
rack-mount (0.4.7) lib/rack/mount/recognition/code_generation.rb:97:in `block in recognize'
rack-mount (0.4.7) lib/rack/mount/recognition/code_generation.rb:73:in `optimized_each'
rack-mount (0.4.7) lib/rack/mount/recognition/code_generation.rb:96:in `recognize'
rack-mount (0.4.7) lib/rack/mount/recognition/route_set.rb:65:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/routing/route_set.rb:420:in `call'
/home/rubys/git/rails/activerecord/lib/active_record/query_cache.rb:29:in `block in call'
/home/rubys/git/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
/home/rubys/git/rails/activerecord/lib/active_record/query_cache.rb:9:in `cache'
/home/rubys/git/rails/activerecord/lib/active_record/query_cache.rb:28:in `call'
/home/rubys/git/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:365:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/head.rb:14:in `call'
rack (1.1.0) lib/rack/methodoverride.rb:24:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/params_parser.rb:20:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/flash.rb:167:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/session/abstract_store.rb:150:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/cookies.rb:205:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/callbacks.rb:46:in `block in call'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:429:in `_run_call_callbacks'
/home/rubys/git/rails/activesupport/lib/active_support/callbacks.rb:88:in `run_callbacks'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/callbacks.rb:44:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/show_exceptions.rb:62:in `call'
/home/rubys/git/rails/railties/lib/rails/rack/logger.rb:13:in `call'
rack (1.1.0) lib/rack/runtime.rb:17:in `call'
rack (1.1.0) lib/rack/lock.rb:11:in `block in call'
<internal:prelude>:8:in `synchronize'
rack (1.1.0) lib/rack/lock.rb:11:in `call'
/home/rubys/git/rails/actionpack/lib/action_dispatch/middleware/static.rb:30:in `call'
/home/rubys/git/rails/railties/lib/rails/application.rb:95:in `call'
/home/rubys/git/rails/railties/lib/rails/application.rb:41:in `method_missing'
/home/rubys/git/rails/railties/lib/rails/rack/log_tailer.rb:15:in `call'
rack (1.1.0) lib/rack/content_length.rb:13:in `call'
rack (1.1.0) lib/rack/handler/webrick.rb:48:in `service'
/home/rubys/.rvm/ruby-1.9.1-p376/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
/home/rubys/.rvm/ruby-1.9.1-p376/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
/home/rubys/.rvm/ruby-1.9.1-p376/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
Parameters:
{"id"=>"wibble"}
cart: #<Cart:0x00000003c4ca08 @items=[#<CartItem:0x00000003c4c8f0 @product=#<Product id: 2, title: "Pragmatic Project Automation", description: "<p>\n <em>Pragmatic Project Automation</em> sh...", image_url: "/images/auto.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:2394068,'0.2995E2',18(18)>>, @quantity=2>, #<CartItem:0x00000003c4bc40 @product=#<Product id: 3, title: "Pragmatic Version Control", description: "<p>\n This book is a recipe-based approach t...", image_url: "/images/svn.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:237cf28,'0.285E2',18(18)>>, @quantity=1>]>
GATEWAY_INTERFACE: "CGI/1.1" HTTP_ACCEPT: "text/html" HTTP_COOKIE: "_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly" HTTP_HOST: "localhost:3000" HTTP_USER_AGENT: "Ruby" HTTP_VERSION: "HTTP/1.1" PATH_INFO: "/store/add_to_cart/wibble" QUERY_STRING: "" REMOTE_ADDR: "127.0.0.1" REMOTE_HOST: "localhost" REQUEST_METHOD: "GET" REQUEST_PATH: "/" REQUEST_URI: "http://localhost:3000/store/add_to_cart/wibble" SCRIPT_NAME: "" SERVER_NAME: "localhost" SERVER_PORT: "3000" SERVER_PROTOCOL: "HTTP/1.1" SERVER_SOFTWARE: "WEBrick/1.3.1 (Ruby/1.9.1/2009-12-07)" action_controller.instance: #<StoreController:0x0000000370ea30 @_headers={}, @_formats=[:html], @_request=#<ActionDispatch::Request:0x0000000370e988 @env={"GATEWAY_INTERFACE"=>"CGI/1.1", "PATH_INFO"=>"/store/add_to_cart/wibble", "QUERY_STRING"=>"", "REMOTE_ADDR"=>"127.0.0.1", "REMOTE_HOST"=>"localhost", "REQUEST_METHOD"=>"GET", "REQUEST_URI"=>"http://localhost:3000/store/add_to_cart/wibble", "SCRIPT_NAME"=>"", "SERVER_NAME"=>"localhost", "SERVER_PORT"=>"3000", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"WEBrick/1.3.1 (Ruby/1.9.1/2009-12-07)", "HTTP_ACCEPT"=>"text/html", "HTTP_USER_AGENT"=>"Ruby", "HTTP_COOKIE"=>"_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly", "HTTP_HOST"=>"localhost:3000", "rack.version"=>[1, 1], "rack.input"=>#<StringIO:0x00000003e87438>, "rack.errors"=>#<IO:<STDERR>>, "rack.multithread"=>false, "rack.multiprocess"=>false, "rack.run_once"=>false, "rack.url_scheme"=>"http", "HTTP_VERSION"=>"HTTP/1.1", "REQUEST_PATH"=>"/", "action_dispatch.parameter_filter"=>[:password], "rack.session"=>{"cart"=>#<Cart:0x00000003c4ca08 @items=[#<CartItem:0x00000003c4c8f0 @product=#<Product id: 2, title: "Pragmatic Project Automation", description: "<p>\n <em>Pragmatic Project Automation</em> sh...", image_url: "/images/auto.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:22a6ea0,'0.2995E2',18(18)>>, @quantity=2>, #<CartItem:0x00000003c4bc40 @product=#<Product id: 3, title: "Pragmatic Version Control", description: "<p>\n This book is a recipe-based approach t...", image_url: "/images/svn.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:22a3a58,'0.285E2',18(18)>>, @quantity=1>]>}, "rack.session.options"=>{:key=>"_depot_session", :path=>"/", :domain=>nil, :expire_after=>nil, :secure=>false, :httponly=>true, :cookie_only=>true, :secret=>"8c3ecf1db82a2129015f77a059189e070ca50a2c6360e3f5f53bbb9a93bb9cb2a3b31b354d307d44c7b7eb1c9d5a89eea1a67f70aa846681fdfe4c9edb324628", :id=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f"}, "rack.request.cookie_string"=>"_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly", "rack.request.cookie_hash"=>{"_depot_session"=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f", "path"=>"/", "HttpOnly"=>nil}, "rack.session.record"=>#<ActiveRecord::SessionStore::Session id: 2, session_id: "BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUk...", data: "BAh7BkkiCWNhcnQGOg1lbmNvZGluZyINVVMtQVNDSUlvOglDYXJ...", created_at: "2010-02-11 19:12:28", updated_at: "2010-02-11 19:12:29">, "action_dispatch.request.path_parameters"=>{:controller=>"store", :action=>"add_to_cart", :id=>"wibble"}, "action_controller.instance"=>#<StoreController:0x0000000370ea30 ...>, "action_dispatch.request.content_type"=>nil, "action_dispatch.request.request_parameters"=>{}, "rack.request.query_string"=>"", "rack.request.query_hash"=>{}, "action_dispatch.request.query_parameters"=>{}, "action_dispatch.request.parameters"=>{"controller"=>"store", "action"=>"add_to_cart", "id"=>"wibble"}, "action_dispatch.request.accepts"=>[#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">], "action_dispatch.request.formats"=>[#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">]}, @filtered_parameters={"controller"=>"store", "action"=>"add_to_cart", "id"=>"wibble"}>, @_response=#<ActionDispatch::Response:0x0000000370e918 @status=200, @header={}, @cache_control={}, @writer=#<Proc:0x0000000370e800@/home/rubys/git/rails/actionpack/lib/action_dispatch/http/response.rb:47 (lambda)>, @block=nil, @length=0, @cookie=[], @body=[], @sending_file=false, @blank=false, @etag=nil, @request=#<ActionDispatch::Request:0x0000000370e988 @env={"GATEWAY_INTERFACE"=>"CGI/1.1", "PATH_INFO"=>"/store/add_to_cart/wibble", "QUERY_STRING"=>"", "REMOTE_ADDR"=>"127.0.0.1", "REMOTE_HOST"=>"localhost", "REQUEST_METHOD"=>"GET", "REQUEST_URI"=>"http://localhost:3000/store/add_to_cart/wibble", "SCRIPT_NAME"=>"", "SERVER_NAME"=>"localhost", "SERVER_PORT"=>"3000", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"WEBrick/1.3.1 (Ruby/1.9.1/2009-12-07)", "HTTP_ACCEPT"=>"text/html", "HTTP_USER_AGENT"=>"Ruby", "HTTP_COOKIE"=>"_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly", "HTTP_HOST"=>"localhost:3000", "rack.version"=>[1, 1], "rack.input"=>#<StringIO:0x00000003e87438>, "rack.errors"=>#<IO:<STDERR>>, "rack.multithread"=>false, "rack.multiprocess"=>false, "rack.run_once"=>false, "rack.url_scheme"=>"http", "HTTP_VERSION"=>"HTTP/1.1", "REQUEST_PATH"=>"/", "action_dispatch.parameter_filter"=>[:password], "rack.session"=>{"cart"=>#<Cart:0x00000003c4ca08 @items=[#<CartItem:0x00000003c4c8f0 @product=#<Product id: 2, title: "Pragmatic Project Automation", description: "<p>\n <em>Pragmatic Project Automation</em> sh...", image_url: "/images/auto.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:226dc78,'0.2995E2',18(18)>>, @quantity=2>, #<CartItem:0x00000003c4bc40 @product=#<Product id: 3, title: "Pragmatic Version Control", description: "<p>\n This book is a recipe-based approach t...", image_url: "/images/svn.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:22548a8,'0.285E2',18(18)>>, @quantity=1>]>}, "rack.session.options"=>{:key=>"_depot_session", :path=>"/", :domain=>nil, :expire_after=>nil, :secure=>false, :httponly=>true, :cookie_only=>true, :secret=>"8c3ecf1db82a2129015f77a059189e070ca50a2c6360e3f5f53bbb9a93bb9cb2a3b31b354d307d44c7b7eb1c9d5a89eea1a67f70aa846681fdfe4c9edb324628", :id=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f"}, "rack.request.cookie_string"=>"_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly", "rack.request.cookie_hash"=>{"_depot_session"=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f", "path"=>"/", "HttpOnly"=>nil}, "rack.session.record"=>#<ActiveRecord::SessionStore::Session id: 2, session_id: "BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUk...", data: "BAh7BkkiCWNhcnQGOg1lbmNvZGluZyINVVMtQVNDSUlvOglDYXJ...", created_at: "2010-02-11 19:12:28", updated_at: "2010-02-11 19:12:29">, "action_dispatch.request.path_parameters"=>{:controller=>"store", :action=>"add_to_cart", :id=>"wibble"}, "action_controller.instance"=>#<StoreController:0x0000000370ea30 ...>, "action_dispatch.request.content_type"=>nil, "action_dispatch.request.request_parameters"=>{}, "rack.request.query_string"=>"", "rack.request.query_hash"=>{}, "action_dispatch.request.query_parameters"=>{}, "action_dispatch.request.parameters"=>{"controller"=>"store", "action"=>"add_to_cart", "id"=>"wibble"}, "action_dispatch.request.accepts"=>[#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">], "action_dispatch.request.formats"=>[#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">]}, @filtered_parameters={"controller"=>"store", "action"=>"add_to_cart", "id"=>"wibble"}>>, @_env={"GATEWAY_INTERFACE"=>"CGI/1.1", "PATH_INFO"=>"/store/add_to_cart/wibble", "QUERY_STRING"=>"", "REMOTE_ADDR"=>"127.0.0.1", "REMOTE_HOST"=>"localhost", "REQUEST_METHOD"=>"GET", "REQUEST_URI"=>"http://localhost:3000/store/add_to_cart/wibble", "SCRIPT_NAME"=>"", "SERVER_NAME"=>"localhost", "SERVER_PORT"=>"3000", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"WEBrick/1.3.1 (Ruby/1.9.1/2009-12-07)", "HTTP_ACCEPT"=>"text/html", "HTTP_USER_AGENT"=>"Ruby", "HTTP_COOKIE"=>"_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly", "HTTP_HOST"=>"localhost:3000", "rack.version"=>[1, 1], "rack.input"=>#<StringIO:0x00000003e87438>, "rack.errors"=>#<IO:<STDERR>>, "rack.multithread"=>false, "rack.multiprocess"=>false, "rack.run_once"=>false, "rack.url_scheme"=>"http", "HTTP_VERSION"=>"HTTP/1.1", "REQUEST_PATH"=>"/", "action_dispatch.parameter_filter"=>[:password], "rack.session"=>{"cart"=>#<Cart:0x00000003c4ca08 @items=[#<CartItem:0x00000003c4c8f0 @product=#<Product id: 2, title: "Pragmatic Project Automation", description: "<p>\n <em>Pragmatic Project Automation</em> sh...", image_url: "/images/auto.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:2232910,'0.2995E2',18(18)>>, @quantity=2>, #<CartItem:0x00000003c4bc40 @product=#<Product id: 3, title: "Pragmatic Version Control", description: "<p>\n This book is a recipe-based approach t...", image_url: "/images/svn.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:2216bb0,'0.285E2',18(18)>>, @quantity=1>]>}, "rack.session.options"=>{:key=>"_depot_session", :path=>"/", :domain=>nil, :expire_after=>nil, :secure=>false, :httponly=>true, :cookie_only=>true, :secret=>"8c3ecf1db82a2129015f77a059189e070ca50a2c6360e3f5f53bbb9a93bb9cb2a3b31b354d307d44c7b7eb1c9d5a89eea1a67f70aa846681fdfe4c9edb324628", :id=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f"}, "rack.request.cookie_string"=>"_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly", "rack.request.cookie_hash"=>{"_depot_session"=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f", "path"=>"/", "HttpOnly"=>nil}, "rack.session.record"=>#<ActiveRecord::SessionStore::Session id: 2, session_id: "BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUk...", data: "BAh7BkkiCWNhcnQGOg1lbmNvZGluZyINVVMtQVNDSUlvOglDYXJ...", created_at: "2010-02-11 19:12:28", updated_at: "2010-02-11 19:12:29">, "action_dispatch.request.path_parameters"=>{:controller=>"store", :action=>"add_to_cart", :id=>"wibble"}, "action_controller.instance"=>#<StoreController:0x0000000370ea30 ...>, "action_dispatch.request.content_type"=>nil, "action_dispatch.request.request_parameters"=>{}, "rack.request.query_string"=>"", "rack.request.query_hash"=>{}, "action_dispatch.request.query_parameters"=>{}, "action_dispatch.request.parameters"=>{"controller"=>"store", "action"=>"add_to_cart", "id"=>"wibble"}, "action_dispatch.request.accepts"=>[#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">], "action_dispatch.request.formats"=>[#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">]}, @_action_name="add_to_cart", @_response_body=nil, @_view_context=#<Class>, @template=#<Class>, @_params={"controller"=>"store", "action"=>"add_to_cart", "id"=>"wibble"}> action_dispatch.parameter_filter: [:password] action_dispatch.request.accepts: [#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">] action_dispatch.request.content_type: nil action_dispatch.request.formats: [#<Mime::Type:0x000000030606c0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">] action_dispatch.request.parameters: {"controller"=>"store", "action"=>"add_to_cart", "id"=>"wibble"} action_dispatch.request.path_parameters: {:controller=>"store", :action=>"add_to_cart", :id=>"wibble"} action_dispatch.request.query_parameters: {} action_dispatch.request.request_parameters: {} rack.errors: #<IO:<STDERR>> rack.input: #<StringIO:0x00000003e87438> rack.multiprocess: false rack.multithread: false rack.request.cookie_hash: {"_depot_session"=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f", "path"=>"/", "HttpOnly"=>nil} rack.request.cookie_string: "_depot_session=BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc%3D--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f; path=/; HttpOnly" rack.request.query_hash: {} rack.request.query_string: "" rack.run_once: false rack.session: {"cart"=>#<Cart:0x00000003c4ca08 @items=[#<CartItem:0x00000003c4c8f0 @product=#<Product id: 2, title: "Pragmatic Project Automation", description: "<p>\n <em>Pragmatic Project Automation</em> sh...", image_url: "/images/auto.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:211ea78,'0.2995E2',18(18)>>, @quantity=2>, #<CartItem:0x00000003c4bc40 @product=#<Product id: 3, title: "Pragmatic Version Control", description: "<p>\n This book is a recipe-based approach t...", image_url: "/images/svn.jpg", created_at: "2010-02-11 19:11:58", updated_at: "2010-02-11 19:11:58", price: #<BigDecimal:20d1d18,'0.285E2',18(18)>>, @quantity=1>]>} rack.session.options: {:key=>"_depot_session", :path=>"/", :domain=>nil, :expire_after=>nil, :secure=>false, :httponly=>true, :cookie_only=>true, :secret=>"8c3ecf1db82a2129015f77a059189e070ca50a2c6360e3f5f53bbb9a93bb9cb2a3b31b354d307d44c7b7eb1c9d5a89eea1a67f70aa846681fdfe4c9edb324628", :id=>"BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUkiJTEyY2RjZmQ5NTgxMTcyM2IxNTI2ODVmMDQ0MWQwN2IxSSIQX2NzcmZfdG9rZW4GOwBAB0kiMVVsc0RYcDF3QzV4VlhXUFdSdUhtbVp2cTJNQTNoOHp4dmhRV0RyR2NnZDQ9BjsAQAc=--ea74e695b937c7ab1c8645a7826ea6eb28d5aa0f"} rack.session.record: #<ActiveRecord::SessionStore::Session id: 2, session_id: "BAh7B0kiD3Nlc3Npb25faWQGOg1lbmNvZGluZyINVVMtQVNDSUk...", data: "BAh7BkkiCWNhcnQGOg1lbmNvZGluZyINVVMtQVNDSUlvOglDYXJ...", created_at: "2010-02-11 19:12:28", updated_at: "2010-02-11 19:12:29"> rack.url_scheme: "http" rack.version: [1, 1]
Headers:
None