情况:
我有一些代码在
lib/foo/bar.rb
中,其中定义了一个简单的方法,如下所示:
在我的辅助类module Foo class Bar def test "FooBar" end end end
FooBarHelper
中,我有:在我的看法中,我这样调用这个帮助方法:
在我的<%= test_foo_bar =>
config/environments/development.rb
文件中,我向config.autoload_paths
中添加了目录。config.autoload_paths += ["#{config.root}/lib/foo"]
require `lib/foo/bar`
module FooBarHelper
def test_foo_bar
fb = Foo::Bar.new
fb.test
end
end
问题:
当我把Foo::Bar.test
的返回值改为例如"MODIFIED FOOBAR"
时,原始返回值"FooBar"
仍然显示在视图中而不是新值。
既然我处于开发模式,难道代码不应该在每个请求时重新加载吗?
请问有人能告诉我我漏掉了什么吗?
谢谢!
config.watchable_dirs['lib'] = [:rb]
,然后在我的控制器中使用了require_dependency "my_folder\my_class"
来引用位于lib\my_folder\my_class
的类。更多信息请参见http://apidock.com/rails/v3.2.8/ActiveSupport/Dependencies/Loadable/require_dependency。 - Sebastian Pattenconfig.autoload_paths
,它甚至无法找到库,并且您没有解释如何告诉Rails去哪里查找,而不是通过autoload_paths
。你是不是要去弄$:
之类的东西?此外,使用require_dependency
会出现“类的超类不匹配”的错误。 - Adam SpiersStruct.new(...)
导致的怪异行为。一旦我消除了这个问题,通过设置config.autoload_paths
,自动加载和重新加载都非常好用。 - Adam Spiers