Skip to content

Commit 90a272a

Browse files
authored
Merge pull request rails#46658 from rails/fix-internal-metadata-connection
Fix internal_metadata connection
2 parents 1638dc7 + e33b2c6 commit 90a272a

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

activerecord/lib/active_record/migration.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1410,8 +1410,8 @@ def migrate_without_lock
14101410
# Stores the current environment in the database.
14111411
def record_environment
14121412
return if down?
1413-
connection = ActiveRecord::Base.connection
1414-
connection.internal_metadata[:environment] = connection.migration_context.current_environment
1413+
1414+
@internal_metadata[:environment] = ActiveRecord::Base.connection.migration_context.current_environment
14151415
end
14161416

14171417
def ran?(migration)

activerecord/test/cases/multi_db_migrator_test.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,30 @@ def test_migrator_forward
196196
assert_equal(3, migrator_b.current_version)
197197
end
198198

199+
def test_internal_metadata_stores_environment
200+
current_env = ActiveRecord::ConnectionHandling::DEFAULT_ENV.call
201+
migrations_path = MIGRATIONS_ROOT + "/valid"
202+
migrator = ActiveRecord::MigrationContext.new(migrations_path, @schema_migration_b, @internal_metadata_b)
203+
204+
migrator.up
205+
assert_equal current_env, @internal_metadata_b[:environment]
206+
207+
original_rails_env = ENV["RAILS_ENV"]
208+
original_rack_env = ENV["RACK_ENV"]
209+
ENV["RAILS_ENV"] = ENV["RACK_ENV"] = "foofoo"
210+
new_env = ActiveRecord::ConnectionHandling::DEFAULT_ENV.call
211+
212+
assert_not_equal current_env, new_env
213+
214+
sleep 1 # mysql by default does not store fractional seconds in the database
215+
migrator.up
216+
assert_equal new_env, @internal_metadata_b[:environment]
217+
ensure
218+
ENV["RAILS_ENV"] = original_rails_env
219+
ENV["RACK_ENV"] = original_rack_env
220+
migrator.down if migrator
221+
end
222+
199223
private
200224
def m(name, version)
201225
x = Sensor.new name, version

0 commit comments

Comments
 (0)