aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/commands/console.rb
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/rails/commands/console.rb')
-rw-r--r--railties/lib/rails/commands/console.rb63
1 files changed, 39 insertions, 24 deletions
diff --git a/railties/lib/rails/commands/console.rb b/railties/lib/rails/commands/console.rb
index 86376ac7e6..92cee6b638 100644
--- a/railties/lib/rails/commands/console.rb
+++ b/railties/lib/rails/commands/console.rb
@@ -4,46 +4,66 @@ require 'irb/completion'
module Rails
class Console
- attr_reader :options, :app, :console, :arguments
-
- def self.start(*args)
- new(*args).start
- end
-
- def initialize(app, arguments = ARGV)
- @app = app
- @arguments = arguments
- app.load_console
- @console = app.config.console || IRB
- end
+ class << self
+ def start(*args)
+ new(*args).start
+ end
- def options
- @options ||= begin
+ def parse_arguments(arguments)
options = {}
OptionParser.new do |opt|
- opt.banner = "Usage: console [environment] [options]"
+ opt.banner = "Usage: rails console [environment] [options]"
opt.on('-s', '--sandbox', 'Rollback database modifications on exit.') { |v| options[:sandbox] = v }
- opt.on("--debugger", 'Enable ruby-debugging for the console.') { |v| options[:debugger] = 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
+ options[:environment] = %w(production development test).detect {|e| e =~ /^#{env}/} || env
+ end
+
options
end
end
+ attr_reader :options, :app, :console
+
+ def initialize(app, options={})
+ @app = app
+ @options = options
+ app.load_console
+ @console = app.config.console || IRB
+ end
+
def sandbox?
options[:sandbox]
end
+ def environment
+ options[:environment] ||= ENV['RAILS_ENV'] || 'development'
+ end
+
+ def environment?
+ environment
+ end
+
+ def set_environment!
+ Rails.env = environment
+ end
+
def debugger?
options[:debugger]
end
def start
app.sandbox = sandbox?
-
require_debugger if debugger?
+ set_environment! if environment?
if sandbox?
puts "Loading #{Rails.env} environment in sandbox (Rails #{Rails.version})"
@@ -60,17 +80,12 @@ module Rails
def require_debugger
begin
- require 'ruby-debug'
+ require 'debugger'
puts "=> Debugger enabled"
rescue Exception
- puts "You need to install ruby-debug19 to run the console in debugging mode. With gems, use 'gem install ruby-debug19'"
+ puts "You're missing the 'debugger' gem. Add it to your Gemfile, bundle, and try again."
exit
end
end
end
end
-
-# Has to set the RAILS_ENV before config/application is required
-if ARGV.first && !ARGV.first.index("-") && env = ARGV.shift # has to shift the env ARGV so IRB doesn't freak
- ENV['RAILS_ENV'] = %w(production development test).detect {|e| e =~ /^#{env}/} || env
-end