2012-01-21 13 views
1

我曾嘗試:如何在嵌入運行腳本時自定義IRB的提示?

@CONF[:PROMPT_MODE] = :SIMPLE 

,但它不會改變我的提示。我正在使用rvm和ruby 1.9.2 Linux。

#!/usr/bin/env ruby 
# encoding: utf-8 
require 'irb' 
module IRB # :nodoc: 
    def self.start_session(binding) 
    unless @__initialized 
     args = ARGV 
     ARGV.replace(ARGV.dup) 
     IRB.setup(nil) 
     ARGV.replace(args) 
     @__initialized = true 
    end 
    workspace = WorkSpace.new(binding) 
    irb = Irb.new(workspace) 
    @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC] 
    @CONF[:MAIN_CONTEXT] = irb.context 
    @CONF[:AUTO_INDENT] = true 
    @CONF[:PROMPT_MODE] = :SIMPLE 
    catch(:IRB_EXIT) do 
     irb.eval_input 
    end 
end 
end 
IRB.start_session(binding) 
+0

如何使用'.irbrc',或者你不想改變默認值? –

+0

另外,根據你的需要,[這個答案](http://stackoverflow.com/a/4987732/438992)可能會讓你去 - 在':MAIN_CONTEXT'工作後設置提示配置。 –

+0

我想爲我的應用程序創建一個irb shell。出於安裝後的原因,我不想使用.irbrc。如果我不需要配置.irbrc,使用起來會更簡單。 – user1162323

回答

0

配置分配:

@CONF[:PROMPT_MODE] = :SIMPLE 

需求來創建厄貝沙坦對象之前:

irb = Irb.new(workspace) 

我不知道其他的設置如何早期都要做,但總的來說最好儘快做到這一點。下面的代碼有這些修改。

#!/usr/bin/env rub 
# encoding: utf-8 
require 'irb' 
module IRB # :nodoc: 
    def self.start_session(binding) 
     unless @__initialized 
      args = ARGV 
      ARGV.replace(ARGV.dup) 
      IRB.setup(nil) 
      ARGV.replace(args) 
      @__initialized = true 
     end 
     @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC] 
     @CONF[:AUTO_INDENT] = true 
     @CONF[:PROMPT_MODE] = :SIMPLE 
     IRB.run_config 
     workspace = WorkSpace.new(binding) 
     irb = Irb.new(workspace) 
     @CONF[:MAIN_CONTEXT] = irb.context 
     catch(:IRB_EXIT) do 
      irb.eval_input 
     end 
    end 
end 
IRB.start_session(binding) 

對不起,我沒有看到這個更快。

相關問題