根据这篇文章,我们可以通过将这些行添加到我们的rakefile来测试我们的gem代码:
task :console do
require 'irb'
require 'irb/completion'
require 'my_gem' # You know what to do.
ARGV.clear
IRB.start
end
Run Code Online (Sandbox Code Playgroud)
它工作得非常好,除了每当对gem进行更改时,我都需要exit重新运行rake console以更新代码.作为创建/调试工具真的不方便......
有没有办法编写一个自定义方法,可以作为reload!Rails 的真棒方法?
bash脚本不能正常工作,因为第一个命令在Ruby控制台中,我宁愿拥有100%的ruby解决方案.
谢谢!
Nei*_*ter 10
您可以使用$LOADED_FEATURESglobal来查找gem的组件并使用该load命令重新加载它们(使用require不起作用,因为它会跳过Ruby已经处理过的项目):
task :console do
require 'irb'
require 'irb/completion'
require 'my_gem' # You know what to do.
def reload!
# Change 'my_gem' here too:
files = $LOADED_FEATURES.select { |feat| feat =~ /\/my_gem\// }
files.each { |file| load file }
end
ARGV.clear
IRB.start
end
Run Code Online (Sandbox Code Playgroud)
请注意,如果您正在编写本机扩展,这将失败,您将不得不排除它们,并且您将需要编译步骤,并且如果它们发生更改,则无论如何都要退出/重新启动.