首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在IRB中重新加载rubygem

在IRB中重新加载rubygem
EN

Stack Overflow用户
提问于 2010-08-12 05:58:30
回答 3查看 5.5K关注 0票数 20

有没有办法“重新加载”或“刷新”内存中的rubygem?当我在irb中玩游戏时,偶尔我喜欢修改我的gem文件,如果我需要相同的gem,它不会更新到内存中,并给出"false“输出。目前,我必须退出IRB,回到IRB,然后再次要求创业板,必须有一个更好的way...what,是吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-12 15:38:19

正如其他人所建议的,您可以使用Kernel#load。但是,不要浪费时间查找和加载每个gem文件,因为所有需要的文件都存储在$“中。

 def reload(require_regex)
  $".grep(/^#{require_regex}/).each {|e| load(e) }
 end

例如,如果您在irb中使用hirb gem,则只需使用以下命令重新加载:

>> reload 'hirb'

如果由于某种原因load不起作用(它对文件扩展名比require更挑剔),您可以通过首先删除$“中的条目来重新请求任何文件。

 def reload(require_regex)
   $".grep(/^#{require_regex}/).each {|e| $".delete(e) && require(e) }
 end

选择适合你的那个。就我个人而言,我使用后者。

票数 18
EN

Stack Overflow用户

发布于 2010-08-12 06:01:25

加载'filename.rb‘

一次一个被改变的.

票数 8
EN

Stack Overflow用户

发布于 2010-08-12 06:34:07

一种方法是使用Kernel#load。除了必须显式地包含文件扩展名之外,您可以像使用Kernel#require一样使用它。然而,它也有它的缺点(即使像class Foo < Struct.new(:foo); end这样简单的东西也会失败,因为不可能改变类的超类),所以我也想知道一种更好的方法。

在rails中,您可以在脚本/控制台上使用reload!来实现这一点,但我不知道他们使用的是哪种魔法。

This gist看起来很有前途,但我还没有测试过它。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3463182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档