Ruby-create gem:用更新的gem内容重新加载控制台[英] Ruby - create gem: reload console with updated gem content

本文是小编为大家收集整理的关于Ruby-create gem:用更新的gem内容重新加载控制台的处理方法,想解了Ruby-create gem:用更新的gem内容重新加载控制台的问题怎么解决?Ruby-create gem:用更新的gem内容重新加载控制台问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

根据这篇文章,我们可以测试通过将这些行添加到我们的 rakefile 来围绕我们的 gem 代码:​​

task :console do
  require 'irb'
  require 'irb/completion'
  require 'my_gem' # You know what to do.
  ARGV.clear
  IRB.start
end

它工作得非常好,除了每当对 gem 进行更改时,我需要 exit 并重新运行 rake console 来更新代码.作为创建/调试工具实在不方便……

有没有办法编写一个自定义方法来充当 Rails 中很棒的 reload! 方法?

bash 脚本无法运行,因为第一个命令位于 Ruby 控制台中,我宁愿拥有 100% 的 ruby​​ 解决方案.

谢谢!

推荐答案

您可以使用 $LOADED_FEATURES 全局查找您的 gem 的组件并使用 load 命令重新加载它们(使用 require won't 工作,因为它跳过了 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

请注意,如果您正在编写本机扩展,这将失败,您必须排除它们,并且您需要一个编译步骤并在它们发生变化时退出/重新启动.

本文地址:https://www.itbaoku.cn/post/786597.html