Как я могу настроить приглашение IRB, если оно встроено в работающий скрипт? - PullRequest
1 голос
/ 21 января 2012

Я пробовал:

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

1 Ответ

0 голосов
/ 23 августа 2014

Назначение конфигурации:

@CONF[:PROMPT_MODE] = :SIMPLE

должен прийти перед созданием объекта Irb :

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)

Извините, я не видел этого раньше.

...