Sch*_*ems 20 ruby ruby-on-rails irb
有没有办法在内存中"重新加载"或"刷新"rubygem?因为我正在玩irb,偶尔我喜欢修改我的gem文件,如果我需要相同的gem,它不会更新到内存中并且输出"false".目前我必须退出IRB,重新进入IRB然后再次要求宝石,必须有更好的方法......它是什么?
cld*_*ker 17
正如其他人所建议的那样,你可以使用Kernel#load.但是,不要浪费时间查找和加载每个gem文件,因为所有已经需要的文件都存储在$".有了这些知识,这里有一个reload irb命令:
def reload(require_regex)
$".grep(/^#{require_regex}/).each {|e| load(e) }
end
Run Code Online (Sandbox Code Playgroud)
例如,如果您在irb中使用hirb gem,则只需使用以下命令重新加载:
>> reload 'hirb'
Run Code Online (Sandbox Code Playgroud)
如果无论出于何种原因加载不起作用(文件扩展名比require要好),你可以通过首先在$"中删除它的条目来重新要求任何文件.通过这个建议,上面的命令将是:
def reload(require_regex)
$".grep(/^#{require_regex}/).each {|e| $".delete(e) && require(e) }
end
Run Code Online (Sandbox Code Playgroud)
选择适合你的那个.就个人而言,我使用后者.
| 归档时间: |
|
| 查看次数: |
4920 次 |
| 最近记录: |