0

我有一个使用会话的 Rails 应用程序,我在本地主机上的 Chrome 中使用它。将其关闭后,我在 Chrome 中启动了另一个不使用会话的应用程序,并收到一个会话错误,该错误指的是新的无会话应用程序中不存在的类。

ActionDispatch::Session::SessionRestoreError (Session contains objects whose class definition isn't available.
Remember to require the classes for all objects kept in the session.
(Original exception: uninitialized constant Question [NameError])
):

当我在另一个浏览器(我以前没有使用过)中尝试新的“无会话”应用程序时,即使它继续无法在 Chrome 中工作,它也能正常工作,所以我猜测来自第一个应用程序的会话正在徘徊镀铬并干扰第二个。我清除了缓存,但它仍然无法正常工作(所以我可能需要在 Chrome 中再次清除 1000 次),但是,我也找到了这个方法

reset_session

http://api.rubyonrails.org/classes/ActionController/Base.html#M000668

但是当我把它放在应用程序控制器中时(希望它会清除整个应用程序的所有会话),它说未定义的局部变量或方法。

两个问题

1) 是预期的行为,即来自第一个应用程序的会话会影响第二个应用程序的功能吗?

2)我应该如何使用reset_session来避免这个问题,或者有其他方法吗?

清除缓存后更新在 Chrome 中运行的应用程序,但我仍然想知道如果可能的话如何使用 reset_session

4

1 回答 1

0

Rails 的最佳实践是使用 Ruby 版本管理器。使用 RVM 重新安装 ruby​​ 将比调试此类问题花费更少的时间。

https://rvm.io/

于 2013-02-05T03:04:13.847 回答