2010-02-02 13 views
9

मेरे पास एक संयुक्त सिनात्रा/रेल ऐप है जो रैक :: सत्र :: कुकी का उपयोग करके सत्र साझा करता है। जब रैक :: हैंडलर :: Thin.run एप्लिकेशन के साथ शुरू किया एप्लिकेशन ठीक काम करता है, लेकिन अगर rackup फ़ाइल पतली शुरू के साथ शुरू होता है, मैं रैक में कोई त्रुटि मिलती है :: सत्र :: कुकी:रैक :: सत्र: सिनात्रा, पतला, रेल, और रैक का उपयोग कर कुकी त्रुटि :: कैस्केड


!! Unexpected error while processing request: no marshal_dump is defined for class Proc 
no marshal_dump is defined for class Proc 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.0.1/lib/rack/session/cookie.rb:64:in `dump' 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.0.1/lib/rack/session/cookie.rb:64:in `commit_session' 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.0.1/lib/rack/session/cookie.rb:38:in `call' 
/usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.5/lib/thin/connection.rb:76:in `block in pre_process' 
/usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.5/lib/thin/connection.rb:74:in `catch' 
/usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.5/lib/thin/connection.rb:74:in `pre_process' 
/usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.5/lib/thin/connection.rb:57:in `process' 
/usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.5/lib/thin/connection.rb:42:in `receive_data' 
/usr/local/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine' 
/usr/local/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run' 
/usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.5/lib/thin/backends/base.rb:57:in `start' 
/usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.5/lib/thin/server.rb:156:in `start' 
/usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.5/lib/thin/controllers/controller.rb:80:in `start' 
/usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.5/lib/thin/runner.rb:177:in `run_command' 
/usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.5/lib/thin/runner.rb:143:in `run!' 
/usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.5/bin/thin:6:in `' 

rackup फ़ाइल इस तरह दिखता है:

app = Rack::Builder.new { 
    use Rack::Session::Cookie, :key => '_example', :domain => 'example.org', :secret => 'secret' 
    use Rails::Rack::Static 
    run Rack::Cascade.new([Sinatra::Application, ActionController::Dispatcher.new]) 
}.to_app 

यो की तरह लग रहा:


require ::File::dirname(__FILE__) + '/config/environment' 
require 'thin' 

app = Rack::Builder.new { 
    use Rails::Rack::Static 
    run Rack::Cascade.new([Sinatra::Application, ActionController::Dispatcher.new]) 
}.to_app 

use Rack::Session::Cookie, :key => '_example', :domain => 'example.org', 
    :secret => 'secret' 

# have to use this 
Rack::Handler::Thin.run app, :Port => 4000, :Host => "0.0.0.0" 
# want to use: run app 

उत्तर

2

आप कुछ इस तरह की कोशिश की है आपकी समस्या यह है कि आप app के बाहर रैक :: सत्र :: कुकी का उपयोग कर रहे हैं।

+0

आश्चर्यजनक रूप से पर्याप्त, यह तब होता है जब रैक :: सत्र :: कुकी रैक :: बिल्डर ब्लॉक के अंदर है, जो पतली शुरुआत -R rackup.ru करता है। –