如何告诉我的rails应用程序在lib文件夹中使用新版本的代码



我想知道这是否特定于Win7。我有个应用,运行时遇到了异常。然后我更改被破坏的代码行并再次发送Post(通过与页面交互,因为它是一个PRG,而不是按F5)。然而,我仍然得到相同的异常。我通过更改一些日志消息进行了测试,得到了相同的结果:没有看到新的代码。

我要修改的代码在我的lib文件夹中。这显然是问题所在。但我的申请里有这个。rb: config.autoload_paths << 'lib'config.autoload_paths += Dir["#{config.root}/lib/**/"]——看起来它覆盖了它(可能两次)。

我已经尝试了这些帖子中的解决方案:

rails在开发模式下不重新加载代码

Rails 3 -如何刷新更新后的代码

都不起作用。我能看到的唯一区别是我在运行调试器,我在Win7上。如果我重新启动Mongrel,就会使用新的代码。

我能做些什么来让Rails运行时使用新的代码而不重新启动?

作为参考,这是我启动调试器时看到的内容:

Fast Debugger (ruby-debug-ide 0.4.17.beta8, ruby-debug-base 0.11.30.pre3) listens on 127.0.0.1:19223
=> Booting Mongrel
=> Rails 3.1.1 application starting in development on http://127.0.0.1:3001
=> Call with -d to detach
=> Ctrl-C to shutdown server

据我所知,/lib中的代码默认加载一次且仅一次,当服务器启动时。因此,如果更改/lib文件夹中的代码,则需要重新启动服务器才能看到更改。

如果您想在每个请求上加载代码,请使用require_dependency http://apidock.com/rails/v3.1.0/ActiveSupport/Dependencies/Loadable/require_dependency

当然,您只希望在开发模式中使用require_dependency,在测试和生产模式中使用正常的require

最新更新