Class: Rails::Console

Inherits:
Object show all
Defined in:
railties/lib/rails/commands/console.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, options = {}) ⇒ Console

Returns a new instance of Console.



46
47
48
49
50
51
52
53
54
# File 'railties/lib/rails/commands/console.rb', line 46

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

  app.sandbox = sandbox?
  app.load_console

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

Instance Attribute Details

#appObject (readonly)

Returns the value of attribute app



44
45
46
# File 'railties/lib/rails/commands/console.rb', line 44

def app
  @app
end

#consoleObject (readonly)

Returns the value of attribute console



44
45
46
# File 'railties/lib/rails/commands/console.rb', line 44

def console
  @console
end

#optionsObject (readonly)

Returns the value of attribute options



44
45
46
# File 'railties/lib/rails/commands/console.rb', line 44

def options
  @options
end

Class Method Details

.parse_arguments(arguments) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 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", 'Enable the debugger.') { |v| options[:debugger] = v }
    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) ⇒ Object



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

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

Instance Method Details

#debugger?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'railties/lib/rails/commands/console.rb', line 72

def debugger?
  options[:debugger]
end

#environmentObject



60
61
62
# File 'railties/lib/rails/commands/console.rb', line 60

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

#environment?Boolean

Returns:

  • (Boolean)


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

def environment?
  environment
end

#require_debuggerObject



93
94
95
96
97
98
99
# File 'railties/lib/rails/commands/console.rb', line 93

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

#sandbox?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'railties/lib/rails/commands/console.rb', line 56

def sandbox?
  options[:sandbox]
end

#set_environment!Object



68
69
70
# File 'railties/lib/rails/commands/console.rb', line 68

def set_environment!
  Rails.env = environment
end

#startObject



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'railties/lib/rails/commands/console.rb', line 76

def start
  require_debugger if debugger?
  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