aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/tasks
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2018-03-16 14:44:20 -0400
committereileencodes <eileencodes@gmail.com>2018-03-21 14:00:58 -0400
commit0f0aa6a275876502e002c054896734d6536ba5cd (patch)
tree9b6d14d4eddc7ea9fab3450f9c83dd6ec39653cb /activerecord/lib/active_record/tasks
parent5eb4488d02fd975ff5c387a8697fc58cca28b9b4 (diff)
downloadrails-0f0aa6a275876502e002c054896734d6536ba5cd.tar.gz
rails-0f0aa6a275876502e002c054896734d6536ba5cd.tar.bz2
rails-0f0aa6a275876502e002c054896734d6536ba5cd.zip
Update schema/structure dump tasks for multi db
Adds the ability to dump the schema or structure files for mulitple databases. Loops through the configs for a given env and sets a filename based on the format, then establishes a connection for that config and dumps into the file.
Diffstat (limited to 'activerecord/lib/active_record/tasks')
-rw-r--r--activerecord/lib/active_record/tasks/database_tasks.rb18
1 files changed, 16 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/tasks/database_tasks.rb b/activerecord/lib/active_record/tasks/database_tasks.rb
index 705a28eef5..e2c292ee56 100644
--- a/activerecord/lib/active_record/tasks/database_tasks.rb
+++ b/activerecord/lib/active_record/tasks/database_tasks.rb
@@ -252,14 +252,28 @@ module ActiveRecord
end
def schema_file(format = ActiveRecord::Base.schema_format)
+ File.join(db_dir, schema_file_type(format))
+ end
+
+ def schema_file_type(format = ActiveRecord::Base.schema_format)
case format
when :ruby
- File.join(db_dir, "schema.rb")
+ "schema.rb"
when :sql
- File.join(db_dir, "structure.sql")
+ "structure.sql"
end
end
+ def dump_filename(namespace, format = ActiveRecord::Base.schema_format)
+ filename = if namespace == "primary"
+ schema_file_type(format)
+ else
+ "#{namespace}_#{schema_file_type(format)}"
+ end
+
+ ENV["SCHEMA"] || File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir, filename)
+ end
+
def load_schema_current(format = ActiveRecord::Base.schema_format, file = nil, environment = env)
each_current_configuration(environment) { |configuration, spec_name, env|
load_schema configuration, format, file, env