aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorNick Muerdter <nick.muerdter@nrel.gov>2015-11-19 11:12:24 -0700
committerNick Muerdter <nick.muerdter@nrel.gov>2015-11-19 11:42:04 -0700
commitd1dcdf21286cb459a422b6b88967d712c75f002a (patch)
treeb6a96e37495a19b61064dedf3956a423d9fef0ed /activerecord/lib/active_record
parent6b7861e8343400b85636d1f32917e463e309864a (diff)
downloadrails-d1dcdf21286cb459a422b6b88967d712c75f002a.tar.gz
rails-d1dcdf21286cb459a422b6b88967d712c75f002a.tar.bz2
rails-d1dcdf21286cb459a422b6b88967d712c75f002a.zip
Fix rake db:structure:dump on Postgres when multiple schemas are used.
If postgresql is being used and there are multiple schemas listed on the `schema_search_path`, then `structure.sql` dumps (triggered by `rake db:structure:dump` or `config.active_record.schema_format = :sql`) began failing in Rails 4.2.5. This is due to the changes made in https://github.com/rails/rails/pull/17885 The problem is that multiple schemas were getting getting passed to `Kernel.system` as a single, space delimited string argument (for example, "--schema=foo --schema=bar"). However, with the updated array style of calling `Kernel.system`, these need to be passed as separate arguments (for example, "--schema=foo", "--schema=bar"). If they get passed as a single string, then the underlying pg_dump program isn't sure how to interpret that single argument and you'll get an error reporting: "pg_dump: No matching schemas were found"
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/tasks/postgresql_database_tasks.rb4
1 files changed, 2 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/tasks/postgresql_database_tasks.rb b/activerecord/lib/active_record/tasks/postgresql_database_tasks.rb
index cd7d949239..8b4874044c 100644
--- a/activerecord/lib/active_record/tasks/postgresql_database_tasks.rb
+++ b/activerecord/lib/active_record/tasks/postgresql_database_tasks.rb
@@ -56,9 +56,9 @@ module ActiveRecord
args = ['-s', '-x', '-O', '-f', filename]
unless search_path.blank?
- args << search_path.split(',').map do |part|
+ args += search_path.split(',').map do |part|
"--schema=#{part.strip}"
- end.join(' ')
+ end
end
args << configuration['database']
run_cmd('pg_dump', args, 'dumping')