mui*_*bot 14 ruby-on-rails ruby-on-rails-2
我最近每次更改代码时都开始重新启动开发服务器.我的development.rb文件仍然有这一行:
config.cache_classes = false
我尝试使用调试器验证此值是否已停留.为此,我将配置设置为environment.rb中的全局变量:
$my_initializer = Rails::Initializer.run do |config| ... end
然后我debugger在我的一个控制器中放了一条线,所以我可以这样做:
(rdb:2) $my_initializer.configuration.cache_classes false
这样就消除了将价值cache_classes设定在true其他地方的可能性.我已经尝试过使用Mongrel和WEBrick,但它仍然会发生.
还有什么可能导致Rails不能在每次请求时重新加载我的代码?
我正在运行:Mongrel 1.1.5
WEBrick 1.3.1
Rails 2.3.8
Ruby 1.8.7 p253
编辑:在@Daemin的建议下,当我将它们保存在我的文本编辑器(Textmate)中时,我检查了我的文件的mtime实际上是否正在更新
merced:controllers lance$ ls -l people_controller.rb -rwxr-xr-x 1 lance staff 2153 Act 10 18:01 people_controller.rb
然后我做了一个更改并保存了文件:
merced:controllers lance$ ls -l people_controller.rb -rwxr-xr-x@ 1 lance staff 2163 Oct 11 12:03 people_controller.rb
所以这不是mtimes的问题.
mui*_*bot 11
所以,事实证明,config.threadsafe!覆盖的效果config.cache_classes = false,即使它实际上并没有覆盖价值的cache_classes(见我的举证问题).在Rails源代码中挖掘更多内容可能会说明为什么会这样,但我实际上并不需要在我的开发环境中使用线程安全行为.相反,我将我的调用替换为config.threadsafe!environment.rb
config.threadsafe! unless RAILS_ENV == "development"
现在一切正常.
如果其他人有这个问题,解决方案就是订单:config.threadsafe!必须要来config.cache_classes.像这样重新排序以修复它:
...
config.threadsafe!
config.cache_classes = false
...
Run Code Online (Sandbox Code Playgroud)
回答来自:Rails:cache_classes => false仍然缓存
我怀疑您希望刷新的类在您的配置中的某个地方是"必需的".请注意,Rails的依赖加载发生在Ruby发生之后require.如果已经需要特定的模块或类,则Rails的依赖加载器不会处理它,因此不会重新加载.有关详细说明,请查看此文章:http://spacevatican.org/2008/9/28/required-or-not
| 归档时间: |
|
| 查看次数: |
4209 次 |
| 最近记录: |