From 01d036b244e7c84c7f02edcbecd239bbf735b782 Mon Sep 17 00:00:00 2001 From: Juan M. Cuello Date: Thu, 12 May 2011 19:02:52 -0300 Subject: [PATCH] Set search_path after pg_dump in db:structure:dump. This patch resets the postgres search path in the structure.sql file prior to dump schema information in order to find schema_migrations table when multiples schemas are dumped. --- .../lib/active_record/railties/databases.rake | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/activerecord/lib/active_record/railties/databases.rake b/activerecord/lib/active_record/railties/databases.rake index 85ad43b..d09836a 100644 --- a/activerecord/lib/active_record/railties/databases.rake +++ b/activerecord/lib/active_record/railties/databases.rake @@ -366,12 +366,14 @@ db_namespace = namespace :db do ENV['PGHOST'] = abcs[Rails.env]['host'] if abcs[Rails.env]['host'] ENV['PGPORT'] = abcs[Rails.env]["port"].to_s if abcs[Rails.env]['port'] ENV['PGPASSWORD'] = abcs[Rails.env]['password'].to_s if abcs[Rails.env]['password'] + schema_file = "#{Rails.root}/db/#{Rails.env}_structure.sql" search_path = abcs[Rails.env]['schema_search_path'] unless search_path.blank? search_path = search_path.split(",").map{|search_path| "--schema=#{search_path.strip}" }.join(" ") end - `pg_dump -i -U "#{abcs[Rails.env]['username']}" -s -x -O -f db/#{Rails.env}_structure.sql #{search_path} #{abcs[Rails.env]['database']}` + `pg_dump -i -U "#{abcs[Rails.env]['username']}" -s -x -O -f #{schema_file} #{search_path} #{abcs[Rails.env]['database']}` raise 'Error dumping database' if $?.exitstatus == 1 + File.open(schema_file, "a") { |f| f << "SET search_path TO #{ActiveRecord::Base.connection.schema_search_path};\n\n" } when /sqlite/ dbfile = abcs[Rails.env]['database'] || abcs[Rails.env]['dbfile'] `sqlite3 #{dbfile} .schema > db/#{Rails.env}_structure.sql` -- 1.7.5.rc3