我正在使用 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'
问题肯定出在 Rack 上,因为当我按如下方式运行我的应用程序时:
红宝石应用程序.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]