diff --git a/lib/active_record/migrations/tasks.rb b/lib/active_record/migrations/tasks.rb index 6732d9d..d5a03e5 100644 --- a/lib/active_record/migrations/tasks.rb +++ b/lib/active_record/migrations/tasks.rb @@ -42,7 +42,7 @@ module Tasks module DatabaseTasks def each_current_configuration(environment, spec_name = nil) unless configuration = ActiveRecord::Base.configurations[environment] - raise ArgumentError.new("Cannot find configuration for environment #{environment.inspect} in #{ActiveRecord::Base.configurations.keys}") + raise ArgumentError.new("Cannot find configuration for environment #{environment.inspect} in #{ActiveRecord::Base.configurations.to_h.keys}") end # This is a hack because DatabaseTasks functionality uses string for keys. diff --git a/spec/active_record/migrations_spec.rb b/spec/active_record/migrations_spec.rb index 0ae95ae..c49847d 100644 --- a/spec/active_record/migrations_spec.rb +++ b/spec/active_record/migrations_spec.rb @@ -53,4 +53,14 @@ expect(File.read('db/schema.rb')).to include("version: 2016_12_08_121932") end end + + it "should handle non-existent configuration" do + require 'active_record/migrations/tasks' + ActiveRecord::Base.configurations = { + "development" => "null://test", + } + expect do + ActiveRecord::Tasks::DatabaseTasks.send(:each_current_configuration, "foo") + end.to raise_error(ArgumentError, 'Cannot find configuration for environment "foo" in ["development"]') + end end