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

时间:2011-06-28 11:38:12

标签: ruby-on-rails ruby-on-rails-3

出于某种原因,我在运行应用程序时遇到“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'

7 个答案:

答案 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应用程序,这可能是缺少上述行的原因。或者也许他们已经被弃用了,因为这个问题最初是被问到/已经解决了,所以这可能会帮助新问题。