Set the Rails environment from an environment variable

Option parsing happens too late to have any impact on the Rails
environment.  Rails accesses the environment name and memoizes it too
early in the boot process for a commandline option to have any impact on
the database connection, so we'll change this test to set the
environment from an environment variable (and ensure it still works when
running tests with `ruby`)
This commit is contained in:
Aaron Patterson 2017-12-08 13:42:01 -08:00
parent cd0283ef29
commit a50b8ea350
No known key found for this signature in database
GPG Key ID: 953170BCB4FFAFC6
2 changed files with 2 additions and 5 deletions

View File

@ -12,11 +12,8 @@ module Rails
class << self
def attach_before_load_options(opts)
ENV["RAILS_ENV"] = "test"
opts.on("--warnings", "-w", "Run with Ruby warnings enabled") {}
opts.on("-e", "--environment ENV", "Run tests in the ENV environment") { |e|
ENV["RAILS_ENV"] = e
}
opts.on("-e", "--environment ENV", "Run tests in the ENV environment") {}
end
def parse_options(argv)

View File

@ -593,7 +593,7 @@ module ApplicationTests
file = create_test_for_env("development")
results = Dir.chdir(app_path) {
`ruby -Ilib:test #{file} -e development`.each_line.map { |line| JSON.parse line }
`RAILS_ENV=development ruby -Ilib:test #{file}`.each_line.map { |line| JSON.parse line }
}
assert_equal 1, results.length
failures = results.first["failures"]