2015-05-14 17 views
0

我試圖以編程方式啓動控制檯的情況下運行如何使用interactive_editor這樣的:當REPL控制檯中的特定對象

這似乎是我試圖滿足的兩個條件是相互排斥的。下面我編寫一個腳本來觸發一個綁定到[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 
--- 
- 1 
- 2 
- 3 

有沒有辦法對我來說,解決這個問題呢?我是否應該將其作爲interactive_editor寶石上的問題提交?當我使用IRB以及interactive_editorirbtools時,會發生同樣的錯誤。

我的猜測是,改變的背景下使得很難對interactive_editor解決其對象定義,但我不知道這是如何工作。

在此先感謝,並請讓我知道,如果我忽略的重要信息。

  1. ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin14.0]
  2. iteractive_editor (0.0.10)
  3. irbtools (2.0.1, 1.7.1)
  4. ripl (0.7.1)
  5. ripltools (0.7.0)

我運行OS X約塞米蒂10.10.3但已經成功地複製在其他幾個Linux系統這個問題。

回答

0

我找到解決的辦法:

def edit(*args) 
    system("$EDITOR #{args.join(' ')") 
end 

這仍然沒有解釋爲什麼我不能讓這個例子與interactive_prompt工作。