我们正在从Ruby 1.9.3升级到Ruby 2,从Rails 3.x升级到Rails4。 我们正在使用设计进行身份验证。我们根据Ryan Bates Railscasts升级了宝石。
现在,当我启动服务器时,我看到以下错误。
更新:这与会话cookie有关,当我以隐身模式打开一个窗口时,我没有收到此错误,但我不希望我的用户收到此错误。
我正在使用rbenv
→ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin12.0]
→ gem list rack
*** LOCAL GEMS ***
rack (1.5.2)
rack-test (0.6.2)
Processing by HomeController#index as HTML
Completed 500 Internal Server Error in 4ms
NoMethodError (undefined method `each_with_object' for #<String:0x007fe40519d368>):
actionpack (4.0.2) lib/action_dispatch/request/session.rb:175:in `stringify_keys'
actionpack (4.0.2) lib/action_dispatch/request/session.rb:170:in `load!'
actionpack (4.0.2) lib/action_dispatch/request/session.rb:160:in `load_for_read!'
actionpack (4.0.2) lib/action_dispatch/request/session.rb:86:in `[]'
warden (1.2.3) lib/warden/session_serializer.rb:30:in `fetch'
warden (1.2.3) lib/warden/proxy.rb:212:in `user'
答案 0 :(得分:1)
尝试通过删除浏览器中的Cookie来删除会话。如果这样做,那么您需要使所有会话无效,这样对您的用户来说不会爆炸。您可以通过更改secret_key_base
config/initializers/session_store.rb
来执行此操作
答案 1 :(得分:1)
我通过在session_store.rb
中注释会话存储缓存来实现它# Use the database for sessions instead of the cookie-based default,
# which shouldn't be used to store highly confidential information
# (create the session table with "rails generate session_migration")
#Reports::Application.config.session_store :cache_store