From a7695579a5979245f7d5e683a67bbfc096f3099a Mon Sep 17 00:00:00 2001 From: kennyj Date: Thu, 6 Dec 2012 02:05:33 +0900 Subject: [PATCH] Add ENV['RACK_ENV'] support to rake runner/console/server. --- railties/CHANGELOG.md | 4 ++++ railties/lib/rails/commands/console.rb | 2 +- railties/lib/rails/commands/runner.rb | 2 +- railties/lib/rails/commands/server.rb | 2 +- railties/test/application/runner_test.rb | 23 +++++++++++++++++++++++ railties/test/commands/console_test.rb | 19 +++++++++++++++++-- railties/test/commands/server_test.rb | 20 ++++++++++++++++++++ 7 files changed, 67 insertions(+), 5 deletions(-) diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md index c3da3094dc555..01dd86c23e34b 100644 --- a/railties/CHANGELOG.md +++ b/railties/CHANGELOG.md @@ -1,5 +1,9 @@ ## Rails 4.0.0 (unreleased) ## +* Add ENV['RACK_ENV'] support to `rails runner/console/server`. + + *kennyj* + * Add `db` to list of folders included by `rake notes` and `rake notes:custom`. *Antonio Cangiano* * Engines with a dummy app include the rake tasks of dependencies in the app namespace. diff --git a/railties/lib/rails/commands/console.rb b/railties/lib/rails/commands/console.rb index 92cee6b6384b2..aef7600fbdd06 100644 --- a/railties/lib/rails/commands/console.rb +++ b/railties/lib/rails/commands/console.rb @@ -45,7 +45,7 @@ def sandbox? end def environment - options[:environment] ||= ENV['RAILS_ENV'] || 'development' + options[:environment] ||= ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development' end def environment? diff --git a/railties/lib/rails/commands/runner.rb b/railties/lib/rails/commands/runner.rb index 62d82cc0050b6..6adbdc6e0b6e3 100644 --- a/railties/lib/rails/commands/runner.rb +++ b/railties/lib/rails/commands/runner.rb @@ -1,7 +1,7 @@ require 'optparse' require 'rbconfig' -options = { environment: (ENV['RAILS_ENV'] || "development").dup } +options = { environment: (ENV['RAILS_ENV'] || ENV['RACK_ENV'] || "development").dup } code_or_file = nil if ARGV.first.nil? diff --git a/railties/lib/rails/commands/server.rb b/railties/lib/rails/commands/server.rb index 0b897d736de8f..cdb29a81561a5 100644 --- a/railties/lib/rails/commands/server.rb +++ b/railties/lib/rails/commands/server.rb @@ -108,7 +108,7 @@ def default_options super.merge({ Port: 3000, DoNotReverseLookup: true, - environment: (ENV['RAILS_ENV'] || "development").dup, + environment: (ENV['RAILS_ENV'] || ENV['RACK_ENV'] || "development").dup, daemonize: false, debugger: false, pid: File.expand_path("tmp/pids/server.pid"), diff --git a/railties/test/application/runner_test.rb b/railties/test/application/runner_test.rb index 81ed5873a5968..797c7a9470800 100644 --- a/railties/test/application/runner_test.rb +++ b/railties/test/application/runner_test.rb @@ -67,5 +67,28 @@ def test_with_hook assert_match "true", Dir.chdir(app_path) { `bundle exec rails runner "puts Rails.application.config.ran"` } end + + def test_default_environment + assert_match "development", Dir.chdir(app_path) { `bundle exec rails runner "puts Rails.env"` } + end + + def test_environment_with_rails_env + orig = ENV['RAILS_ENV'] + ENV['RAILS_ENV'] = "production" + assert_match "production", Dir.chdir(app_path) { `bundle exec rails runner "puts Rails.env"` } + ensure + ENV['RAILS_ENV'] = orig + end + + def test_environment_with_rails_env + rack, rails = ENV['RACK_ENV'], ENV['RAILS_ENV'] + ENV['RACK_ENV'] = "production" + ENV['RAILS_ENV'] = nil + assert_match "production", Dir.chdir(app_path) { `bundle exec rails runner "puts Rails.env"` } + ensure + ENV['RAILS_ENV'] = rails + ENV['RACK_ENV'] = rack + end + end end diff --git a/railties/test/commands/console_test.rb b/railties/test/commands/console_test.rb index f99ea13022785..4062905c16a6d 100644 --- a/railties/test/commands/console_test.rb +++ b/railties/test/commands/console_test.rb @@ -78,6 +78,13 @@ def test_default_environment_with_rails_env assert_match(/\sspecial-production\s/, output) end end + + def test_default_environment_with_rack_env + with_rack_env 'production' do + start + assert_match(/\sproduction\s/, output) + end + end def test_e_option start ['-e', 'special-production'] @@ -128,10 +135,18 @@ def parse_arguments(args) end def with_rails_env(env) - original_rails_env = ENV['RAILS_ENV'] + rails = ENV['RAILS_ENV'] ENV['RAILS_ENV'] = env yield ensure - ENV['RAILS_ENV'] = original_rails_env + ENV['RAILS_ENV'] = rails + end + + def with_rack_env(env) + rack = ENV['RACK_ENV'] + ENV['RACK_ENV'] = env + with_rails_env(nil) { yield } + ensure + ENV['RACK_ENV'] = rack end end diff --git a/railties/test/commands/server_test.rb b/railties/test/commands/server_test.rb index 4a3ea82e3dc01..6a75207ebb7e4 100644 --- a/railties/test/commands/server_test.rb +++ b/railties/test/commands/server_test.rb @@ -23,4 +23,24 @@ def test_server_option_without_environment assert_nil options[:environment] assert_equal 'thin', options[:server] end + + def test_environment_with_rails_env + rails = ENV['RAILS_ENV'] + ENV['RAILS_ENV'] = 'production' + server = Rails::Server.new + assert_equal 'production', server.options[:environment] + ensure + ENV['RAILS_ENV'] = rails + end + + def test_environment_with_rack_env + rack, rails = ENV['RACK_ENV'], ENV['RAILS_ENV'] + ENV['RAILS_ENV'] = nil + ENV['RACK_ENV'] = 'production' + server = Rails::Server.new + assert_equal 'production', server.options[:environment] + ensure + ENV['RACK_ENV'] = rack + ENV['RAILS_ENV'] = rails + end end