2

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 サーバーを使用しています。

4

2 に答える 2