Ruby 当嵌入到正在运行的脚本中时,如何自定义IRB的提示?

Ruby 当嵌入到正在运行的脚本中时,如何自定义IRB的提示?,ruby,prompt,irb,Ruby,Prompt,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(A

我试过:

@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)

配置分配:

@CONF[:PROMPT_MODE] = :SIMPLE
需要在创建Irb对象之前提交:

我不确定其他设置需要多早完成,但总的来说,最好尽快完成。下面的代码有这些修改

#!/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)

很抱歉,我没有更早地看到这一点。

使用.irbrc怎么样,或者您不想更改默认设置?此外,根据您的需要,在:MAIN_上下文工作后,您可能需要设置提示配置。我想为我的应用程序创建一个irb外壳。由于安装后的原因,我不想使用.irbrc。如果我不必配置.irbrc,使用起来会更简单。我不明白为什么@conf[:PROMPT\u MODE]=:SIMPLE不工作,因为自动缩进正在工作。区别是什么?RVM会设置自己的提示,但可能是在代码运行后(不确定)。
#!/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)