2016-04-08 69 views
0

我想添加一個控制檯到我的Ruby cli應用程序(很像Rails控制檯),但我似乎無法找到一個解決方案來做我所需要的:啓用一個Ruby應用程序的控制檯

  • 彩色化&語法突出顯示
  • 能力的變量傳遞或使用當前的上下文

我想使用pry,但我不能找出如何被打印禁用代碼上下文在會議開始時。我希望它立即開始會話,除了提示以外不打印任何內容。

這裏是目前獲取打印什麼時候撬會話啓動:

Frame number: 0/8 

From: <file_path> @ line <#> <Class>#<method>: 

    71: def console 
    72: client_setup 
    73: puts "Console Connected to #{@client.url}" 
    74: puts 'HINT: The @client object is available to you' 
    75: rescue StandardError => e 
    76: puts "WARNING: Couldn't connect to #{@client.url}" 
    77: ensure 
    78: Pry.config.prompt = proc { "> " } 
    79: binding.pry 
=> 80: end 
> 

這裏就是我想:

> 

我也嘗試了一些其他的解決方案,但這裏是我的問題,每個:

  • IRB:沒有着色,似乎不可定製
  • ripl:無彩色化或語法突出顯示

任何幫助在這裏將不勝感激!

+0

它看起來像你試圖讓你的程序加載Pry,但我認爲正確的解決方案是讓Pry加載你的程序。在Pry提示符出現在名爲'setup.rb'的文件中之前,將要運行的代碼放入。然後用'pry -r setup.rb'啓動Pry。 –

回答

0

我落得這樣做是定義一個非常簡單的/空類綁定到:

class Console 
    def initialize(client) 
    @client = client 
    end 
end 

然後在我的控制檯方法:

Pry.config.prompt = proc { '> ' } 
Pry.plugins['stack_explorer'] && Pry.plugins['stack_explorer'].disable! 
Pry.start(Console.new(@client)) 

禁用的stack_explorer從打印畫面編號信息阻止它,裏面的Pry會話,我可以按預期訪問@client。

0

我們通常創建一個像我們的項目斌/控制檯一個單獨的可執行文件,並把類似的內容有這個:

#!/usr/bin/env ruby 

require_relative "../application" 

require "pry" 
Pry.start 

application.rb中何處是通過捆紮機加載寶石,包括所有必要的應用程序文件相關的文件,因此可以在控制檯中使用應用程序類。

使用終端上的./bin/console命令啓動控制檯很容易。

如果您需要定製控制檯的外觀,然後在GitHub上的官方wiki有這個足夠的信息:https://github.com/pry/pry/wiki/Customization-and-configuration

+0

謝謝@孫尼馬加丹。我實際上已經在Thor cli中完成了這些工作,並且還有一些設置代碼,我希望能夠爲其他cli命令使用和共享。我正在尋找的主要事情是在開始會話之前設置禁用打印代碼的選項。我無法在wiki中找到它。 – jsmartt

+0

...或者如果我可以弄清楚如何創建一個新的空綁定並在其中放置一個變量,那也會很棒。 – jsmartt

相關問題