我已经找了很长一段时间了,但是我还没有在Ruby中找到像python的-i标志那样的任何东西。
如果我正在测试一些东西,我的常见行为是使用一个python标志运行未完成的-i脚本,这样我就可以看到和播放每个变量中的值。
如果我尝试irb <file>,它仍然在EOF终止,显然ruby <file>也不能工作。是否有我缺少的命令行标志,或者其他实现此功能的方法?
编辑:添加了我所说的功能类型的解释。
Python中的当前行为
file.py
a = 1命令提示符
$ python -i file.py
>>> a
1如您所见,变量a的值在控制台中也是可用的。
发布于 2018-03-16 11:22:03
是否有我缺少的命令行标志,或者其他实现此功能的方法?
是的,两者都有。我会报道“另一条路”。
从ruby2.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是可能的。但现在它在标准包装里了。
发布于 2018-03-16 11:29:51
您可以使用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运行它。对于红宝石来说,似乎没有一种能达到这种精确行为的单一衬里。
https://stackoverflow.com/questions/49319484
复制相似问题