出于某种原因,我在运行应用程序时遇到“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'
答案 0 :(得分:16)
我从development.rb
中删除了以下行config.action_view.debug_rjs = true
config.action_controller.perform_caching = false
不确定这是否正确,但它对我有用。
答案 1 :(得分:11)
我在升级操作系统后尝试了同样的问题。 如果使用RVM完成安装,则只使用以下命令:
rvm repair all
答案 2 :(得分:3)
我将haml添加到我的Gemfile后出现此错误。它似乎是rails 3.1
的rails更新中的一个错误将rails更新到3.2.2并将haml更新到3.1.4解决了这个问题。有关该错误的更多信息可以是found here。
答案 3 :(得分:1)
刚出现同样的问题,我发现服务器上的数据库中没有数据 - 我的恢复失败,因为我忘了创建db所需的登录角色。一旦我从备份中正确恢复了数据库,rails就能完美运行。
我不确定你是否处于类似情况,但我想我会告诉你我是如何解决它的,以防万一你和我在同一条船上:)祝你好运!
答案 4 :(得分:1)
在development.rb中删除此行,为我工作
config.action_view.debug_rjs = true
消息
ActionController :: Base的未定义方法`page_cache_extension':Class
不是问题的根本原因,但显示的是最后一条错误消息
检查日志后,我可以看到另一个错误
[2012-04-28 21:37:59] ERROR NoMethodError:未定义的方法`debug_rjs ='for ActionView :: Base:Class
并根据here
debug_rj已删除。因此从配置中删除它有帮助
注意:
与here一样,仍建议在README中添加...
Another Thread关于同样的问题
答案 5 :(得分:0)
我在development.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导致了问题。虽然重启可能有所帮助,但我相信这些文件可能是原因。希望这有一些帮助。
答案 6 :(得分:0)
遇到这个问题,但没找到任何一行
config.action_view.debug_rjs = true
或
config.action_controller.perform_caching = false
in development.rb。
相反,我发表评论
config.cache_classes = false
靠近我development.rb
的顶部并且有效。我正在使用OpenShift生成的Rails 4应用程序,这可能是缺少上述行的原因。或者也许他们已经被弃用了,因为这个问题最初是被问到/已经解决了,所以这可能会帮助新问题。