Sinatra と Rack を使用して、Facebook Canvas アプリケーションでセッションを使用しています。
Facebook Canvas で発生するエラーは次のとおりです。
NoMethodError - undefined method `session' for #<Hash:0xa3ed0a0>:
/home/apoorv/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:170:in `session'
次のようにアプリケーションを実行すると、問題は間違いなくラックにあります。
ruby application.rb -p 3000
エラーは表示されません。ラック バージョン 1.3.6 および 1.4.1 をインストールしようとしましたが、エラーが解決しません。
代わりに次のコードを使用してみましたenable :sessions
use Rack::Session::Cookie, :key => 'rack.session',
:domain => 'static.ak.facebook.com',
:path => '/',
:secret => 'change_me'
これを機能させるには、Rack の下位バージョンにアップグレード/デグレードするか、コードを追加する必要がありますか?
編集済み
また、この問題に遭遇する前に、アプリケーションを Facebook Canvas に統合する際に問題がありましたが、これは config.ru に次の行を追加することで解決されました。
set :protection, :except => [:remote_token, :frame_options]