Class: Rails::Console::IRBConsole
| Relationships & Source Files | |
| Inherits: | Object |
| Defined in: | railties/lib/rails/commands/console/irb_console.rb |
Constant Summary
-
LOGO =
# File 'railties/lib/rails/commands/console/irb_console.rb', line 82%w[⠀⢀⠀⢡⣶⣿⠟⡛⠢ ⠠⠀⣰⣿⣿⠁⠄⠀⠀ ⠶⢠⣿⣿⣿⠰⠆⠀⠀ ⠶⢸⣿⣿⣿⡄⠰⠆⠀].freeze
-
TIPS =
# File 'railties/lib/rails/commands/console/irb_console.rb', line 72[ '"app" opens an ActionDispatch::Integration::Session for the app', '"helper" gives access to ApplicationController\'s helper methods', '"controller" gives you a new ApplicationController instance', '"reload!" reloads the application', '"--sandbox" rolls back database changes when the console exits', '"_" holds the value of the last evaluated expression', '"source_location" shows where a method was defined, e.g. method(:reload!).source_location', ].freeze
Class Method Summary
- .new(app, options = {}) ⇒ IRBConsole constructor
Instance Attribute Summary
- #show_tips? ⇒ Boolean readonly
Instance Method Summary
Constructor Details
.new(app, options = {}) ⇒ IRBConsole
Instance Attribute Details
#show_tips? ⇒ Boolean (readonly)
[ GitHub ]
# File 'railties/lib/rails/commands/console/irb_console.rb', line 162
def show_tips? ENV["RAILS_TIPS"] != "false" end
Instance Method Details
#colorize_tip(tip)
[ GitHub ]# File 'railties/lib/rails/commands/console/irb_console.rb', line 166
def colorize_tip(tip) tip.gsub(/"[^"]*"/) { |match| IRB::Color.colorize(match, [:YELLOW]) } end
#colorized_env
[ GitHub ]#colorized_short_env
[ GitHub ]#env_color
[ GitHub ]#name
[ GitHub ]# File 'railties/lib/rails/commands/console/irb_console.rb', line 92
def name "IRB" end
#short_env
[ GitHub ]#short_rails_root
[ GitHub ]#show_startup_banner
[ GitHub ]# File 'railties/lib/rails/commands/console/irb_console.rb', line 134
def return $stderr.puts(Rails::Console.startup_lines(@app.sandbox)) unless IRB.conf[:SHOW_BANNER] logo_lines = unicode_logo tip_line = show_tips? ? "TIP: #{colorize_tip(TIPS.sample)}" : "" info_lines = [ "#{IRB::Color.colorize('Rails', [:BOLD])} v#{Rails.version} - Ruby #{RUBY_VERSION} (#{colorized_env})", tip_line, IRB::Color.colorize(short_rails_root, [:CYAN]), Rails::Console::HELP_HINT, ] output = if logo_lines logo_lines.zip(info_lines).map { |logo, info| "#{IRB::Color.colorize(logo.to_s, [:RED, :BOLD])} #{info}" }.join("\n") else info_lines.join("\n") end $stderr.puts $stderr.puts output $stderr.puts IRB::Color.colorize("\nSandbox mode: changes rolled back on exit", [:YELLOW]) if @app.sandbox $stderr.puts end
#start
[ GitHub ]# File 'railties/lib/rails/commands/console/irb_console.rb', line 96
def start IRB.setup(nil) # CLI --no-banner wins over IRB defaults / .irbrc. IRB.conf[:SHOW_BANNER] = false if @options[:] == false if !Rails.env.local? && !ENV.key?("IRB_USE_AUTOCOMPLETE") IRB.conf[:USE_AUTOCOMPLETE] = false end env = colorized_short_env prompt_prefix = "%N(#{env})" # Respect user's configured irb name. IRB.conf[:IRB_NAME] = @app.name if IRB.conf[:IRB_NAME] == "irb" IRB.conf[:PROMPT][:RAILS_PROMPT] = { PROMPT_I: "#{prompt_prefix}:%03n> ", PROMPT_S: "#{prompt_prefix}:%03n%l ", PROMPT_C: "#{prompt_prefix}:%03n* ", 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
#unicode_logo
[ GitHub ]# File 'railties/lib/rails/commands/console/irb_console.rb', line 158
def unicode_logo ($stderr.external_encoding || Encoding.default_external) == Encoding::UTF_8 ? LOGO : nil end