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

我在this thread中找到了一个方法,但这显然只适用于gem文件.我的要求声明是这样的

 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

推荐答案

在irb中,File.expand_path(__FILE__)}只返回"#{path you ran irb from}/(irb)".这条路并不存在.幸运的是,所有文件路径都与运行irb的位置有关.这意味着你只需要:

load "lib/query.rb"

如果您想在实际文件中使用__FILE__,这很好,但不要期望它在irb中生成有效路径.因为irb根本没有"文件",所以它根本无法返回有效路径.

此外,如果在通过load或require加载到irb的文件中使用__FILE__,也可以正常工作.因为这就是它的目的.

Ruby相关问答推荐

在 clojure 中,如何将已排序整数数组划分为连续的分区?

使用 Sorbet RBI 时需要 Elem

在 ruby​​ 中提取文档中的主题标签和部分

如何从 DateTime 值中删除区域?

我可以在 Ruby 的 heredoc 中访问变量吗?

Ruby 中的 Monad 类似功能

有没有办法通过哈希初始化对象?

从href html标签中提取带有Ruby中nokogiri的链接(URL)?

Ruby 中的 :+ 和 &:+ 是什么?

比较ruby中的两个字符串

来自 Linux 上的命令队列的并行处理(bash、python、ruby ......随便)

格式化 Ruby 的漂亮打印

理解|| Ruby 中 If 条件中的 OR 运算符

查找两个数组之间的共同值

RSpec:每次指定对具有不同参数的方法的多次调用

需要必要的库和/或头文件时如何安装 ruby​​-debug

Jekyll - 找不到命令

Bundle不适用于 rbenv

如何在不等式中使用Ruby case ... when?

从Ruby中的子类方法调用父类中的方法