使用Rails,Sinatra,Padrino…当我做修改时,我习惯了我的代码被自动重新加载。
当我在普通的Ruby gem项目上工作时,我如何获得相同的行为,这些项目不是基于框架的web框架。
我只想启动一个pry
控制台,并在中间能够测试源代码的最新修改。
最佳答案
您只需要在某个地方定义一个方法,清除内存中的旧内容,然后重新加载构成gem的所有文件:
def reload!
Object.send(:remove_const, :ProjectNamespace)
path = File.expand_path("../", __FILE__)
Dir.glob("#{path}/**/*.rb") { |f| load f }
end
因为您使用的是Pry,所以如果您想将其排除在代码库之外,可以在项目的
.pryrc
中定义它。您甚至可以在模块内部定义重新加载逻辑,只要它包含在重新加载的文件中,一切都将正常:
module ProjectNamespace
module_function
def reload!
# Reload code
end
end
ProjectNamespace.reload!
如果您需要一个更受管理的解决方案(例如定时重新加载),您应该查看一个类似Rubyworks' autoreload的库。
关于ruby - Ruby代码自动重装而无需Rails,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25630528/