123456789_123456789_123456789_123456789_123456789_

Class: Rails::Console::IRBConsole

Relationships & Source Files
Inherits: Object
Defined in: railties/lib/rails/commands/console/irb_console.rb

Class Method Summary

Instance Method Summary

Constructor Details

.new(app) ⇒ IRBConsole

[ GitHub ]

  
# File 'railties/lib/rails/commands/console/irb_console.rb', line 64

def initialize(app)
  @app = app

  require "irb"
  require "irb/completion"
end

Instance Method Details

#colorized_env

[ GitHub ]

  
# File 'railties/lib/rails/commands/console/irb_console.rb', line 109

def colorized_env
  case Rails.env
  when "development"
    IRB::Color.colorize("dev", [:BLUE])
  when "test"
    IRB::Color.colorize("test", [:BLUE])
  when "production"
    IRB::Color.colorize("prod", [:RED])
  else
    Rails.env
  end
end

#name

[ GitHub ]

  
# File 'railties/lib/rails/commands/console/irb_console.rb', line 71

def name
  "IRB"
end

#start

[ GitHub ]

  
# File 'railties/lib/rails/commands/console/irb_console.rb', line 75

def start
  IRB.setup(nil)

  if !Rails.env.local? && !ENV.key?("IRB_USE_AUTOCOMPLETE")
    IRB.conf[:USE_AUTOCOMPLETE] = false
  end

  env = colorized_env
  app_name = @app.class.module_parent_name.underscore.dasherize
  prompt_prefix = "#{app_name}(#{env})"

  IRB.conf[:PROMPT][:RAILS_PROMPT] = {
    PROMPT_I: "#{prompt_prefix}> ",
    PROMPT_S: "#{prompt_prefix}%l ",
    PROMPT_C: "#{prompt_prefix}* ",
    RETURN: "=> %s\n"
  }

  if current_filter = IRB.conf[:BACKTRACE_FILTER]
    IRB.conf[:BACKTRACE_FILTER] = -> (backtrace) do
      backtrace = current_filter.call(backtrace)
      Rails.backtrace_cleaner.filter(backtrace)
    end
  else
    IRB.conf[:BACKTRACE_FILTER] = -> (backtrace) do
      Rails.backtrace_cleaner.filter(backtrace)
    end
  end

  # Respect user's choice of prompt mode.
  IRB.conf[:PROMPT_MODE] = :RAILS_PROMPT if IRB.conf[:PROMPT_MODE] == :DEFAULT
  IRB::Irb.new.run(IRB.conf)
end