Skip to content

Commit

Permalink
Add ENV['RACK_ENV'] support to rake runner/console/server.
Browse files Browse the repository at this point in the history
  • Loading branch information
kennyj committed Dec 5, 2012
1 parent 396c068 commit a769557
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 5 deletions.
4 changes: 4 additions & 0 deletions 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.
Expand Down
2 changes: 1 addition & 1 deletion railties/lib/rails/commands/console.rb
Expand Up @@ -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?
Expand Down
2 changes: 1 addition & 1 deletion 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?
Expand Down
2 changes: 1 addition & 1 deletion railties/lib/rails/commands/server.rb
Expand Up @@ -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"),
Expand Down
23 changes: 23 additions & 0 deletions railties/test/application/runner_test.rb
Expand Up @@ -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
19 changes: 17 additions & 2 deletions railties/test/commands/console_test.rb
Expand Up @@ -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']
Expand Down Expand Up @@ -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
20 changes: 20 additions & 0 deletions railties/test/commands/server_test.rb
Expand Up @@ -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

0 comments on commit a769557

Please sign in to comment.