我正在编写一个在Rails环境中使用的Ruby脚本,但我选择从irb运行它,因为重新加载Rails控制台可能是一件痛苦的事情。现在irb的等待时间要短得多,但我很困扰,因为我必须重新启动irb,并在每次进行更改时都需要脚本。有没有从irb重新加载脚本的更简单的方法?
我在this thread中找到了一个方法,但显然它只适用于gem文件。我的require语句看起来像这样
require "#{File.expand_path(__FILE__)}/../lib/query"
编辑:我尝试过load
而不是require
,但还是不能正常工作。我不能停止这些错误。
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
发布于 2011-01-08 18:58:07
在irb中,File.expand_path(__FILE__)}
将只返回"#{path you ran irb from}/(irb)"
。这就创建了一条实际上并不存在的路径。幸运的是,所有的文件路径都是相对于运行irb的位置的。这意味着你所需要的是:
load "lib/query.rb"
如果你想在一个实际的文件中使用__FILE__
,那是可以的,但是不要期望它在irb中产生一个有效的路径。因为irb根本没有"file“,所以它根本不能返回有效路径。
此外,如果在通过load或require加载到irb的文件中使用__FILE__
,则可以很好地工作。因为这就是它的作用。
发布于 2011-01-08 11:03:02
尝试使用load
而不是require
。前者只加载源文件一次,而后者每次调用时都加载它。
发布于 2011-01-08 11:07:42
根据this link的说法,你需要加载你的文件,并且不要忘记扩展名。
这里有一个更花哨的版本,也可以在this link number 2上使用,它也可能对你有帮助。
不过,您可能想试着找出为什么rails控制台对您不起作用。
https://stackoverflow.com/questions/4632090
复制相似问题