ActionController :: Base的未定义方法`page_cache_extension’:Class

出于某种原因,当我运行我的应用程序时,我得到“ActionController :: Base:Class”的“未定义的方法`page_cache_extension”错误。

奇怪的是,它似乎只是在我启动机器并启动服务器后的第一次启动时发生的。 如果我刷新页面 – 它加载正常。 如果我重新启动我的服务器 – 它也可以正常工作。

我在windows7上使用rails 3.0.9和ruby 1.9.2,我认为它在我升级到3.0.7之后就开始了。 至少,3.0.3我没有得到这个。

这是跟踪:

[2011-06-28 15:16:39] INFO WEBrick 1.3.1 [2011-06-28 15:16:39] INFO ruby 1.9.2 (2011-02-18) [i386-mingw32] [2011-06-28 15:16:39] INFO WEBrick::HTTPServer#start: pid=5292 port=3000 [2011-06-28 15:27:18] ERROR NoMethodError: undefined method `page_cache_extension' for ActionController::Base:Class D:/dev/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.9/lib/action_dispatch/middleware/static.rb:21:in `call' D:/dev/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/application.rb:168:in `call' D:/dev/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/application.rb:77:in `method_missing' D:/dev/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/rack/log_tailer.rb:14:in `call' D:/dev/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/content_length.rb:13:in `call' D:/dev/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/handler/webrick.rb:52:in `service' D:/dev/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service' D:/dev/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run' D:/dev/Ruby192/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread' Started GET "/" for 127.0.0.1 at 2011-06-28 15:27:21 +0400 Processing by GamesController#index as HTML Category Load (2.0ms) SELECT "categories".* FROM "categories" Game Load (17.0ms) SELECT "games".* FROM "games" WHERE "games"."approved" = 't' AND "games"."published" = 't' ORDER BY approved_at DESC LIMIT 3 ... Rendered games/_game.haml (7.0ms) Rendered games/index.haml within layouts/application (574.0ms) Completed 200 OK in 638ms (Views: 586.0ms | ActiveRecord: 28.0ms) [2011-06-28 15:27:23] ERROR Errno::ECONNABORTED:                        -                                              . D:/dev/Ruby192/lib/ruby/1.9.1/webrick/httpresponse.rb:323:in `write' D:/dev/Ruby192/lib/ruby/1.9.1/webrick/httpresponse.rb:323:in `<<' D:/dev/Ruby192/lib/ruby/1.9.1/webrick/httpresponse.rb:323:in `_write_data' D:/dev/Ruby192/lib/ruby/1.9.1/webrick/httpresponse.rb:295:in `send_body_string' D:/dev/Ruby192/lib/ruby/1.9.1/webrick/httpresponse.rb:186:in `send_body' D:/dev/Ruby192/lib/ruby/1.9.1/webrick/httpresponse.rb:103:in `send_response' D:/dev/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:86:in `run' D:/dev/Ruby192/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread' 

我从development.rb中删除了以下行

 config.action_view.debug_rjs = true config.action_controller.perform_caching = false 

不确定这是否正确,但它对我有用。

升级我的操作系统后,我尝试了同样的问题。 如果使用RVM完成安装,则只使用以下命令:

 rvm repair all 

我将haml添加到我的Gemfile后出现此错误。 它似乎是rails 3.1的rails更新中的一个错误

将rails更新到3.2.2并将haml更新到3.1.4解决了这个问题。 有关该bug的更多信息可以在这里找到 。

刚遇到同样的问题,我发现服务器上的数据库中没有数据 – 我的恢复失败了,因为我忘了创建db所需的登录角色。 一旦我从备份中正确恢复了数据库,rails就能完美运行。

我不确定你是否处于类似的情况,但我想我会告诉你我是如何解决的,以防万一你和我在同一条船上:)祝你好运!

在developer.rb中删除此行为我工作

config.action_view.debug_rjs = true

消息

ActionController :: Base的未定义方法`page_cache_extension’:Class

不是问题的根本原因,但显示的是最后一条错误消息

检查日志后,我可以看到另一个错误

[2012-04-28 21:37:59] ERROR NoMethodError:ActionView :: Base的未定义方法`debug_rjs =’:Class

并根据这里

debug_rj已删除。 因此从配置中删除它有帮助

注意:

在这里 ,仍然建议在README中添加…

关于同样问题的另一个主题

我在developer.rb中评论了这两行

 #config.action_view.debug_rjs = true #config.action_controller.perform_caching = false 

但问题仍然存在。 我刚刚删除并重新创建了我的数据库,所以我想也许是因为上面没有数据。 创建记录后,我仍然没有成功。 最后,在我的情况下,我完全重启了….

 sudo shutdown -r now 

我现在能够运行我的rails应用程序了。 虽然不是一个可靠的解决方案,但它可能会有所帮助。

在启动我的rails应用程序时,我注意到并非所有我最近的拉动变化都出现了? 我注意到我已将.js文件更改为.js.erb文件。 当我完成提交时,我使用了git add。 这留下了两个文件。 我回去发了git add -u我做了另一个提交,预编译并重新启动…现在所有的更改都在那里,错误消失了。 似乎与example.js.erb在同一目录中的example.js导致了问题。 虽然重启可能有所帮助,但我相信这些文件可能是原因。 希望这个对你有帮助。

遇到这个问题,但没有找到任何一条线

 config.action_view.debug_rjs = true 

要么

 config.action_controller.perform_caching = false 

在development.rb。

相反,我评论出来

 config.cache_classes = false 

这是我的development.rb的顶部,它工作。 我正在使用OpenShift生成的Rails 4应用程序,这可能是缺少上述行的原因。 或者也许他们已被弃用,因为问题最初是被问到/已经解决的,所以这可能会帮助新问题。