Ruby 是否有 `python -i` 的版本?

Does Ruby have a version of `python -i`?

我已经找了一段时间了,但是我在Ruby中没有找到任何像python-i标志的东西。

如果我正在测试某些东西,我的常见行为是 运行 带有 -i 标志的未完成的 python 脚本,这样我就可以看到并使用其中的值每个变量。

如果我尝试 irb <file>,它仍然会在 EOF 处终止,而且显然 ruby <file> 也不起作用。是否缺少我缺少的命令行标志,或者可以通过其他方式实现此功能?

编辑: 添加了对我所说的功能类型的解释。

Python

中的当前行为

file.py

a = 1

命令提示符

$ python -i file.py
>>> a
1

如您所见,变量 a 的值也在控制台中可用。

您可以使用命令irb。启动后,您可以使用 load './filename.rb'

加载和执行任何 ruby 文件

Is there a command-line flag that I'm missing, or some other way this functionality can be achieved?

是的,两者都有。我将介绍 "other way"。

从 ruby 2.5 开始,您可以在代码的某个位置放置一个 binding.irb,然后程序将在那时进入交互式控制台。

% cat stop.rb
puts 'hello'

binding.irb

然后

% ruby stop.rb
hello

From: stop.rb @ line 3 :

    1: puts 'hello'
    2:
 => 3: binding.irb
irb(main):001:0> 

以前很长一段时间都是可能的,pry。但现在它在标准包中。

您可以使用 irb -r ./filename.rb-r 用于 "require"),这与 python -i ./filename.py.

基本相同

编辑 以更好地回答精炼的问题:

实际上,irb -r ./filename.rb 相当于 运行 irb 和随后的 运行 irb(main):001:0> require './filename.rb'。因此,来自 filename.rb 的局部变量不会最终出现在检查范围内。

python -i ./filename.py 似乎相当于将 binding.irb 添加到文件的最后一行,然后 运行 添加 ruby ./filename.rb。似乎没有 one-liner 等同于实现 ruby.

的这种确切行为