Vad*_*dim 8 ruby-on-rails ruby-on-rails-3.2
如何强制为每个请求重新加载gem?
我开发了一个gem,并希望每次在浏览器中刷新页面时重新加载我的gem代码.我的Gemfile:
gem "my_gem", :path => "../my_gem"
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我尝试了stakoverflow中列出的每个建议.什么都没有帮助.还发现了两个Rails配置参数:watchable_dirs和watchable_files.试图使用它们,但它们也不适合我.
您应该使用 ActiveSupport::Dependency unloadable 方法将要重新加载的类标记为不可加载;
class YourClass
unloadable
end
Run Code Online (Sandbox Code Playgroud)
http://apidock.com/rails/ActiveSupport/Dependency/Loadable/unloadable和 http://robots.thoughtbot.com/post/159805560/tips-for-writing-your-own-rails-engine
应该给你一些背景知识。或者你也可以像这样自己重新加载;
Object.send(:remove_const, 'YOUR_CLASS') if Object.const_defined?('YOUR_CLASS')
GC.start
load 'path/to/your_file.rb'
Run Code Online (Sandbox Code Playgroud)