diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-05-30 14:49:59 -0700 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-05-30 14:49:59 -0700 |
commit | 4056915cf5dd885186465f63dce0ad9caf6e60f8 (patch) | |
tree | 98ff0f6fcd02335d8a8d82777c16f444ebfdfcf8 /railties/lib/rails/commands/console.rb | |
parent | c56ef677058de800fbdd16affaf00af10832d69c (diff) | |
parent | dce0afd47f334f61a4ab22acccef7c5e9d6e8b0a (diff) | |
download | rails-4056915cf5dd885186465f63dce0ad9caf6e60f8.tar.gz rails-4056915cf5dd885186465f63dce0ad9caf6e60f8.tar.bz2 rails-4056915cf5dd885186465f63dce0ad9caf6e60f8.zip |
Merge pull request #6276 from samoli/fix_console_arguments
Fix various bugs with console arguments and improve test coverage
Diffstat (limited to 'railties/lib/rails/commands/console.rb')
-rw-r--r-- | railties/lib/rails/commands/console.rb | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/railties/lib/rails/commands/console.rb b/railties/lib/rails/commands/console.rb index b95df3e545..92cee6b638 100644 --- a/railties/lib/rails/commands/console.rb +++ b/railties/lib/rails/commands/console.rb @@ -4,21 +4,12 @@ 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| @@ -31,20 +22,38 @@ module Rails 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? - options[:environment] + environment end def set_environment! - Rails.env = options[:environment] + Rails.env = environment end def debugger? @@ -53,9 +62,7 @@ module Rails def start app.sandbox = sandbox? - require_debugger if debugger? - set_environment! if environment? if sandbox? @@ -82,8 +89,3 @@ module Rails 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 |