123456789_123456789_123456789_123456789_123456789_

Class: Rails::Console

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

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(app, options = {}) ⇒ Console

[ GitHub ]

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

def initialize(app, options={})
  @app     = app
  @options = options

  app.sandbox = sandbox?
  app.load_console

  @console = app.config.console || IRB
end

Class Method Details

.parse_arguments(arguments)

[ GitHub ]

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

def parse_arguments(arguments)
  options = {}

  OptionParser.new do |opt|
    opt.banner = "Usage: rails console [environment] [options]"
    opt.on('-s', '--sandbox', 'Rollback database modifications on exit.') { |v| options[:sandbox] = v }
    opt.on("-e", "--environment=name", String,
            "Specifies the environment to run this console under (test/development/production).",
            "Default: development") { |v| options[:environment] = v.strip }
    opt.on("--debugger", 'Enables the debugger.') do |v|
      if RUBY_VERSION < '2.0.0'
        options[:debugger] = v
      else
        puts "=> Notice: debugger option is ignored since Ruby 2.0 and " \
             "it will be removed in future versions."
      end
    end
    opt.parse!(arguments)
  end

  if arguments.first && arguments.first[0] != '-'
    env = arguments.first
    if available_environments.include? env
      options[:environment] = env
    else
      options[:environment] = %w(production development test).detect {|e| e =~ /^#{env}/} || env
    end
  end

  options
end

.start(*args)

[ GitHub ]

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

def start(*args)
  new(*args).start
end

Instance Attribute Details

#app (readonly)

[ GitHub ]

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

attr_reader :options, :app, :console

#console (readonly)

[ GitHub ]

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

attr_reader :options, :app, :console

#debugger?Boolean (readonly)

[ GitHub ]

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

def debugger?
  options[:debugger]
end

#environment (readonly)

[ GitHub ]

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

def environment
  options[:environment] ||= ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
end

#environment?Boolean (readonly)

[ GitHub ]

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

def environment?
  environment
end

#options (readonly)

[ GitHub ]

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

attr_reader :options, :app, :console

#sandbox?Boolean (readonly)

[ GitHub ]

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

def sandbox?
  options[:sandbox]
end

Instance Method Details

#require_debugger

[ GitHub ]

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

def require_debugger
  require 'debugger'
  puts "=> Debugger enabled"
rescue LoadError
  puts "You're missing the 'debugger' gem. Add it to your Gemfile, bundle it and try again."
  exit(1)
end

#set_environment!

[ GitHub ]

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

def set_environment!
  Rails.env = environment
end

#start

[ GitHub ]

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

def start
  if RUBY_VERSION < '2.0.0'
    require_debugger if debugger?
  end

  set_environment! if environment?

  if sandbox?
    puts "Loading #{Rails.env} environment in sandbox (Rails #{Rails.version})"
    puts "Any modifications you make will be rolled back on exit"
  else
    puts "Loading #{Rails.env} environment (Rails #{Rails.version})"
  end

  if defined?(console::ExtendCommandBundle)
    console::ExtendCommandBundle.send :include, Rails::ConsoleMethods
  end
  console.start
end