如何强制我的插件重新加载每个请求?

msa*_*nce 16 plugins ruby-on-rails reload ruby-on-rails-plugins ruby-on-rails-3

据我了解,在开发模式下每个请求都不会在Rails中重新加载插件.这是有道理的,因为通常您将插件添加到您的应用程序,它是您正在开发的应用程序.

但是如果你正在开发一个插件,你必须重新启动服务器,每次更改插件都会产生很大的开销.

有没有办法让Rails在开发过程中重新加载你的插件,重新加载模型和控制器的方式?

Sor*_*row 9

我也一直在努力解决这个问题.这些解决方案都不起作用,包括autoload_pathsautoload_once_paths技巧.此外,hack with FileUpdateChecker和initializers也没有帮助(检查器正确触发,但文件没有重新加载).同样的config.reload_plugins = true......

但是,有一个解决方案.在app/controllers/application_controller.rb添加一行: require_dependency 'your_file_name_here' 应用控制器重新加载在每次请求,并require_dependency让被检查修改您的文件,并相应地重新加载.它适用于我,Apache 2,Passenger 3和Rails 3.0.3.


Zub*_*bin 1

如果在插件代码更改时自动重新启动服务器是一个可接受的解决方案,您可以使用 Mike Clark/topfunky 的解决方案rstakeout,或者更新的watchr听起来可以做同样的事情。

你会做这样的事情:

rstakeout 'touch tmp/restart.txt' 'vendor/plugins/**/*'
Run Code Online (Sandbox Code Playgroud)