【发布时间】:2019-07-29 21:55:26
【问题描述】:
试图编写一个通过命令行与用户交互通信的程序。 当我们与普通的 irb 交互时,我们可以给出块进行评估或留空。类似的东西:
irb(main):001:0> 1+2
#=> 3
irb(main):002:0> class Foo
irb(main):003:1> def foo
irb(main):004:2> print 1
irb(main):005:2> end
irb(main):006:1> q
[2156][giles@nikola:~]$
#=> nil
在这个交互式 shell 上输入 'q' 后,我们应该能够退出 irb shell 以及整个程序。
我创建了一个程序来打开这个交互式会话,我们可以对程序的现有内容执行某些操作。就像我们可以改变 @var 的值一样 irb(main):001:0> @var = 'new' => 新的
但我想使用绑定来实现这一点,也不想在我的代码中使用“#require 'irb'”调用 irb 方法。
我的解决方案:
require 'irb'
class C
def my_method
@var = 'hi'
$my_binding = binding
IRB.start(__FILE__)
end
end
C.new.my_method
预期结果:我想以类似的方式实现它 -
class Bind
def get_binding(param)
binding
end
end
....
【问题讨论】:
-
查看github.com/pry/pry,了解其他人如何做类似的工作。
-
感谢@anothermh 指导我。但是我将不得不再次使用 require 'pry' 并尝试通过 binding.pry 打开交互式会话。我试图避免使用现有的库。
-
我的意思是你应该看看 pry 看看他们是怎么做的。
-
我明白你的意思。