当 REPL 控制台在特定对象的上下文中为 运行 时如何使用 interactive_editor
How to use interactive_editor when REPL console is run in context of a particular object
我正在尝试以编程方式启动控制台,以便:
- 其上下文绑定到特定对象 (link to Stack Overflow)。
- 它允许我使用
interactive_editor
Gem (link to GitHub) 提供的工具(即 vim
命令)。
看来我要满足的两个条件是相互排斥的。下面我写了一个脚本来启动一个绑定到 [1,2,3]
列表上下文的 REPL。
# test.rb
require 'ripl'
require 'interactive_editor'
Ripl.start :binding => [1,2,3].instance_eval { binding }
如果你运行ruby test.rb
,你可以看到你在[1,2,3]
的上下文中:
>> self
=> [1, 2, 3]
>> map { |a| a * 2 }
=> [2, 4, 6]
但如果您尝试使用 interactive_editor
的功能:
>> vim "something"
=> [1, 2, 3]
最后一行启动 vim
并实际写入文件 "something"(没有我明确保存):
# something
---
- 1
- 2
- 3
有什么办法可以解决这个问题吗?我应该将此作为问题提交到 interactive_editor
Gem 吗?当我将 IRB
与 interactive_editor
或 irbtools
.
一起使用时,会出现相同类型的错误
我的猜测是,更改上下文会使 interactive_editor
解析其对象定义变得相当困难,但我不确定这是如何工作的。
在此先感谢,如果我遗漏了重要信息,请告诉我。
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin14.0]
iteractive_editor (0.0.10)
irbtools (2.0.1, 1.7.1)
ripl (0.7.1)
ripltools (0.7.0)
我是 运行ning OS X Yosemite 10.10.3,但我已经成功地在其他几个 Linux 机器上复制了这个问题。
我找到了解决这个问题的方法:
def edit(*args)
system("$EDITOR #{args.join(' ')")
end
这仍然不能解释为什么我不能让这个例子与 interactive_prompt
一起工作。
我正在尝试以编程方式启动控制台,以便:
- 其上下文绑定到特定对象 (link to Stack Overflow)。
- 它允许我使用
interactive_editor
Gem (link to GitHub) 提供的工具(即vim
命令)。
看来我要满足的两个条件是相互排斥的。下面我写了一个脚本来启动一个绑定到 [1,2,3]
列表上下文的 REPL。
# test.rb
require 'ripl'
require 'interactive_editor'
Ripl.start :binding => [1,2,3].instance_eval { binding }
如果你运行ruby test.rb
,你可以看到你在[1,2,3]
的上下文中:
>> self
=> [1, 2, 3]
>> map { |a| a * 2 }
=> [2, 4, 6]
但如果您尝试使用 interactive_editor
的功能:
>> vim "something"
=> [1, 2, 3]
最后一行启动 vim
并实际写入文件 "something"(没有我明确保存):
# something
---
- 1
- 2
- 3
有什么办法可以解决这个问题吗?我应该将此作为问题提交到 interactive_editor
Gem 吗?当我将 IRB
与 interactive_editor
或 irbtools
.
我的猜测是,更改上下文会使 interactive_editor
解析其对象定义变得相当困难,但我不确定这是如何工作的。
在此先感谢,如果我遗漏了重要信息,请告诉我。
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin14.0]
iteractive_editor (0.0.10)
irbtools (2.0.1, 1.7.1)
ripl (0.7.1)
ripltools (0.7.0)
我是 运行ning OS X Yosemite 10.10.3,但我已经成功地在其他几个 Linux 机器上复制了这个问题。
我找到了解决这个问题的方法:
def edit(*args)
system("$EDITOR #{args.join(' ')")
end
这仍然不能解释为什么我不能让这个例子与 interactive_prompt
一起工作。