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

如何在IRB中重新加载脚本?
EN

Stack Overflow用户
提问于 2011-01-08 10:55:18
回答 4查看 44.3K关注 0票数 69

我正在编写一个在Rails环境中使用的Ruby脚本,但我选择从irb运行它,因为重新加载Rails控制台可能是一件痛苦的事情。现在irb的等待时间要短得多,但我很困扰,因为我必须重新启动irb,并在每次进行更改时都需要脚本。有没有从irb重新加载脚本的更简单的方法?

我在this thread中找到了一个方法,但显然它只适用于gem文件。我的require语句看起来像这样

代码语言:javascript
复制
 require "#{File.expand_path(__FILE__)}/../lib/query"

编辑:我尝试过load而不是require,但还是不能正常工作。我不能停止这些错误。

代码语言:javascript
复制
ruby-1.9.2-p0 > load "#{File.expand_path(__FILE__)}/../lib/query.rb"
LoadError: no such file to load -- /Users/newuser/Dropbox/Sites/rails/hacknyc/(irb)/../lib/query.rb
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-08 18:58:07

在irb中,File.expand_path(__FILE__)}将只返回"#{path you ran irb from}/(irb)"。这就创建了一条实际上并不存在的路径。幸运的是,所有的文件路径都是相对于运行irb的位置的。这意味着你所需要的是:

代码语言:javascript
复制
load "lib/query.rb"

如果你想在一个实际的文件中使用__FILE__,那是可以的,但是不要期望它在irb中产生一个有效的路径。因为irb根本没有"file“,所以它根本不能返回有效路径。

此外,如果在通过load或require加载到irb的文件中使用__FILE__,则可以很好地工作。因为这就是它的作用。

票数 112
EN

Stack Overflow用户

发布于 2011-01-08 11:03:02

尝试使用load而不是require。前者只加载源文件一次,而后者每次调用时都加载它。

票数 43
EN

Stack Overflow用户

发布于 2011-01-08 11:07:42

根据this link的说法,你需要加载你的文件,并且不要忘记扩展名。

这里有一个更花哨的版本,也可以在this link number 2上使用,它也可能对你有帮助。

不过,您可能想试着找出为什么rails控制台对您不起作用。

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

https://stackoverflow.com/questions/4632090

复制
相关文章

相似问题

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