2

根据所有这些优秀的参考资料,我将旧的 Ruby (1.8.7) 和 Rails (2.2.2) 应用程序迁移到 Ruby (1.9.3) 和 Rails (3.2.12):

Rails 升级脚本
Rails 3 迁移博客
引导 Rails 3 应用程序

我能够启动应用程序的 Rails 服务器,但是当我通过浏览器访问应用程序时,然后是 BLAMMO!我收到服务器错误:

!!处理请求时出现意外错误:ActionController::Base:Class 的未定义方法 `session='

当我 grep -r for "session =" 我得到:

/var/www/vendor_sandbox/config/application.rb:    config.action_controller.session = {
/var/www/vendor_sandbox/config/environment.rb.rails2:  config.action_controller.session = {
/var/www/vendor_sandbox/destroy/config/environment.rb:  config.action_controller.session = {
/var/www/vendor_sandbox/generate/config/environment.rb:  config.action_controller.session = {

根据对该错误的 Google 搜索,这是 Rails 2 中的一个老问题,所以我想知道我是否在迁移过程中遗漏了某些内容,或者这是其他问题。谢谢

这是我的终端会话活动:

root@partners:/var/www/vendor_sandbox# ruby -v
ruby 1.9.3p385 (2013-02-06 revision 39114) [i686-linux]
root@partners:/var/www/vendor_sandbox# rails --version
Rails 3.2.12
root@partners:/var/www/vendor_sandbox# rails s
=> Booting Thin
=> Rails 3.2.12 application starting in development on     http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server

>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop

然后,我从浏览器中点击应用程序并:

!! Unexpected error while processing request: undefined method `session=' for ActionController::Base:Class
4

1 回答 1

6

尝试config.session_store改用。您必须指定商店类型,很可能是:cookie_store. 这是一个示例,说明它在您的application.rb

config.session_store(:cookie_store, {:key => foo, :secret => bar})

无论你有什么选择,都session=将进入那里的哈希值。

于 2013-02-19T16:24:19.407 回答