繁体   English   中英

在Mac OS X Mountain Lion上升级到Ruby 2.0后,Rails缓存我的代码

[英]Rails caching my code after upgrading to Ruby 2.0 on Mac OS X Mountain Lion

在Mac OS X Mountain Lion 10.8.4上从Ruby 1.8.7升级到Ruby 2.0之后,Rails 3.2.13在开发模式下缓存我的助手模块,控制器和其他ruby代码。

每次重新启动服务器后,即使在rails控制台中,代码更改也只会被拾取。 重装! 控制台中的command也不起作用,并且直到我再次重新启动Rails控制台之前,它不会重新加载我的代码更改。

不缓存Javascript和Sass文件,而是缓存Views,Controller和其他ruby代码。 我检查了development.rb文件,并将以下缓存设置设置为false。

config.cache_classes = false

另外,启动服务器时,它将以开发模式启动,如控制台日志所示

Rails 3.2.13 application starting in development on http://0.0.0.0:3000

不知道发生了什么,但是出于测试目的,我确实更改了系统的时区和时间,并将时间恢复为实际时间。

在正确的时间和时区重新启动机器后,我什至git再次将存储库克隆到我的系统上,仍然有问题。 有人知道如何解决此问题,或者每次在开发模式下提出请求时如何强制重新加载所有ruby代码吗?

如果您最近还从较旧的Rails版本升级。 如果是这种情况,请注意lib 不会在Rails 3中自动加载 您正在谈论仍应自动加载的辅助程序模块和控制器,但lib不会。 您可以按照此答案中的说明将其更改为自动加载,添加另一个自动加载的目录,或将这些类移动到现有的自动加载目录(例如, app/models ,如果合适)。

如果您在config.autoload_once_paths配置了某些内容,则可能会成为重新加载这些内容的问题,否则应根据指南的每个请求重新加载它们(如果您对正在发生的事情感到好奇,可以在此处查看代码)。

另外,请检查以确保您确实在开发模式下运行,并注意您不能根据此答案将lib添加到development.rb中的config.eager_load_paths中。

如果您的代码有时间问题,也可能是当您重新克隆存储库时,文件上的日期仍然错误。 尝试做: find /path/to/rails/app -exec touch {} \\; 更新文件mod日期时间。 (顺便说一句,您可能还想确保DB中created_at / updated_at中的日期时间是可以的。希望这不是问题,因为那可能是一团糟。)

最后,确保自动加载目录下的类与它们所在的模块相对应。例如, Foo::BarsController可以位于app\\controllers\\foo\\bars_controller.rb但不能位于app\\controllers\\bars_controller.rb您希望它能够自动加载并正确重新加载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM