diff options
author | schneems <richard.schneeman@gmail.com> | 2012-03-22 13:13:12 -0400 |
---|---|---|
committer | schneems <richard.schneeman@gmail.com> | 2012-03-22 13:13:12 -0400 |
commit | 7529283732bb56ba1b0125aabab774d01b4057c7 (patch) | |
tree | f76adacf439a57fbc8f779f9571e87cfd031a55c | |
parent | 0a555dd421f3b7966df1a1f70ae462a143734d21 (diff) | |
download | rails-7529283732bb56ba1b0125aabab774d01b4057c7.tar.gz rails-7529283732bb56ba1b0125aabab774d01b4057c7.tar.bz2 rails-7529283732bb56ba1b0125aabab774d01b4057c7.zip |
match rails console environment support, to server
rails server takes `-e` as an argument to specify RAILS_ENV, rails console currently does not have the same interface. This commit fixes this disparity so developers can manually specify `RAILS_ENV` or can pass in an environment with a `-e`.
-rw-r--r-- | railties/lib/rails/commands/console.rb | 13 | ||||
-rw-r--r-- | railties/test/commands/console_test.rb | 19 |
2 files changed, 32 insertions, 0 deletions
diff --git a/railties/lib/rails/commands/console.rb b/railties/lib/rails/commands/console.rb index 86376ac7e6..d7c9e820dc 100644 --- a/railties/lib/rails/commands/console.rb +++ b/railties/lib/rails/commands/console.rb @@ -24,6 +24,9 @@ module Rails OptionParser.new do |opt| opt.banner = "Usage: 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 ruby-debugging for the console.') { |v| options[:debugger] = v } opt.parse!(arguments) end @@ -36,6 +39,14 @@ module Rails options[:sandbox] end + def environment? + options[:environment] + end + + def set_environment! + Rails.env = options[:environment] + end + def debugger? options[:debugger] end @@ -45,6 +56,8 @@ module Rails 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" diff --git a/railties/test/commands/console_test.rb b/railties/test/commands/console_test.rb index 01847ae58c..9aa1d68675 100644 --- a/railties/test/commands/console_test.rb +++ b/railties/test/commands/console_test.rb @@ -55,6 +55,25 @@ class Rails::ConsoleTest < ActiveSupport::TestCase assert_match /Loading \w+ environment in sandbox \(Rails/, output end + def test_console_with_environment + app.expects(:sandbox=).with(nil) + FakeConsole.expects(:start) + + start ["-e production"] + + assert_match /production/, output + end + + def test_console_with_rails_environment + app.expects(:sandbox=).with(nil) + FakeConsole.expects(:start) + + start ["RAILS_ENV=production"] + + assert_match /production/, output + end + + def test_console_defaults_to_IRB config = mock("config", :console => nil) app = mock("app", :config => config) |