如何解决Rails控制台可以在lib下重新加载模块吗?
| 我在libs下的Rails项目中有一个模块。我运行“ rails c”并在控制台中进行一些试验。我对lib下的模块进行了更改,从控制台键入\'reload!\',并且它不会重新加载文件。我必须退出控制台并重新启动,这确实很痛苦。 有没有更好的方法来重新加载该文件?解决方法
尝试这个:
load \"#{Rails.root}/lib/yourfile.rb\"
, 如果有人感兴趣,这是我关于如何自动重新加载所需的结果,这些要求在Rails中需要文件而无需重新启动服务器。
该解决方案现在作为Ruby gem require_reloader提供。
, 这是可以帮助您的monkeypatch,可以将其粘贴到rails控制台中(或者您可以将代码放入monkeypatch文件中,尽管我不建议使用实用程序方法来实现monkeypatching Object):
class Object
def self.reload_myself!
method = (self.instance_methods(false) + self.methods(false)).select{|method| method.to_s[0] =~ /[A-Za-z]/}.last
if method
if self.instance_methods(false).index method
method = self.instance_method(method)
elsif
method = self.method(method)
end
if (method.source_location)
source_location = method.source_location[0]
puts \"reloading: #{source_location}\"
load \"#{source_location}\"
else
puts \"could not reload #{self.name}\"
end
end
end
end
你可以打电话
reload_myself!
在任何对象上重新加载其源代码。
, 将以下内容添加到config/initializers/reload.rb
class Object
def reload_lib!
Dir[\"#{Rails.root}/lib/**/*.rb\"].map { |f| [f,load(f) ] } #.all? { |a| a[1] }
# uncomment above if you don\'t want to see all the reloaded files
end
end
您现在可以通过在控制台中键入reload_lib!
重新加载ѭ5中的所有文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。