Ruby Sinatra アプリケーションをテストおよび本番環境で実行しようとしています。メインクラスは次のとおりです。
class Main < Sinatra::Application
helpers Sinatra::ContentFor
helpers Sinatra::Partials
helpers Sinatra::Auth
use Rack::Session::Cookie, :secret => 'supersecret' , :expire_after => 360000
set :environment, :production
configure :development do
enable :sessions, :logging, :dump_errors, :inline_templates
enable :methodoverride
set :root, $_APP_PATH
set :static, true
logger = Logger.new($stdout)
end
configure :production do
enable :logging, :dump_errors, :inline_templates
enable :methodoverride
set :root, $_APP_PATH
set :static, true
logger = Logger.new($stdout)
end
get "/2configure" do
haml :'2configure'
end
end
これは で機能しますset :environment, :development
が、「テスト」および「本番」では次のエラーが発生します。
!! Unexpected error while processing request: undefined method `bytesize' for nil:NilClass
これはスタック トレースの上部です。
NoMethodError - undefined method `bytesize' for nil:NilClass:
/home/id833541/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.3.10/lib/rack/utils.rb:291:in `bytesize'
/home/id833541/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.3.10/lib/rack/utils.rb:351:in `secure_compare'
/home/id833541/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.3.10/lib/rack/session/cookie.rb:115:in `unpacked_cookie_data'
/home/id833541/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.3.10/lib/rack/session/cookie.rb:105:in `extract_session_id'
/home/id833541/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.3.10/lib/rack/session/abstract/id.rb:43:in `load_session_id!'
/home/id833541/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.3.10/lib/rack/session/abstract/id.rb:32:in `[]'
/home/id833541/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.3.10/lib/rack/session/abstract/id.rb:252:in `current_session_id'
/home/id833541/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.3.10/lib/rack/session/abstract/id.rb:258:in `session_exists?'
/home/id833541/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.3.10/lib/rack/session/abstract/id.rb:104:in `exists?'
/home/id833541/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.3.10/lib/rack/session/abstract/id.rb:114:in `load_for_read!'
/home/id833541/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.3.10/lib/rack/session/abstract/id.rb:59:in `[]'
私はそれがセッションと関係があるとほぼ確信しています。なんらかの理由で、これはシナトラで正しくなるのに直腸の痛みです. 私は以前にこの問題を抱えていましたが、それを使用して動作するようになりましたenable :sessions
。今でもそれはもう機能しません。
セッションへのアクセス時にエラーが発生することを確認しました。私が持っているHAMLファイルでは:
%p="Welcome #{session[:full_name]}"
初めて空です。しかし、それはエラーを与えるべきですか?
オブジェクトにアクセスしようとしないリクエストでも、どのリクエストでも発生しますsession
が、スタック トレースはありません。
Thin Web サーバーを使用しています。