diff options
author | kennyj <kennyj@gmail.com> | 2012-06-20 01:28:44 +0900 |
---|---|---|
committer | kennyj <kennyj@gmail.com> | 2012-06-20 01:28:44 +0900 |
commit | d8dfcacd44a051b2c8bf0e940472b074e2c5dfb7 (patch) | |
tree | cda528d444d6ecbd357ee8ead18b4622ab76a77d /activerecord/lib/active_record/railties | |
parent | 1aa052c6889bf5371ec92e5bfc461070d7d99761 (diff) | |
download | rails-d8dfcacd44a051b2c8bf0e940472b074e2c5dfb7.tar.gz rails-d8dfcacd44a051b2c8bf0e940472b074e2c5dfb7.tar.bz2 rails-d8dfcacd44a051b2c8bf0e940472b074e2c5dfb7.zip |
Refactor db:structure:dump task.
Diffstat (limited to 'activerecord/lib/active_record/railties')
-rw-r--r-- | activerecord/lib/active_record/railties/databases.rake | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/activerecord/lib/active_record/railties/databases.rake b/activerecord/lib/active_record/railties/databases.rake index d513dca1f5..b8205a99a8 100644 --- a/activerecord/lib/active_record/railties/databases.rake +++ b/activerecord/lib/active_record/railties/databases.rake @@ -275,21 +275,11 @@ db_namespace = namespace :db do abcs = ActiveRecord::Base.configurations filename = ENV['DB_STRUCTURE'] || File.join(Rails.root, "db", "structure.sql") case abcs[Rails.env]['adapter'] - when /mysql/, 'oci', 'oracle' + when /mysql/, /postgresql/, /sqlite/ + ActiveRecord::Tasks::DatabaseTasks.structure_dump(abcs[Rails.env], filename) + when 'oci', 'oracle' ActiveRecord::Base.establish_connection(abcs[Rails.env]) File.open(filename, "w:utf-8") { |f| f << ActiveRecord::Base.connection.structure_dump } - when /postgresql/ - set_psql_env(abcs[Rails.env]) - search_path = abcs[Rails.env]['schema_search_path'] - unless search_path.blank? - search_path = search_path.split(",").map{|search_path_part| "--schema=#{Shellwords.escape(search_path_part.strip)}" }.join(" ") - end - `pg_dump -i -s -x -O -f #{Shellwords.escape(filename)} #{search_path} #{Shellwords.escape(abcs[Rails.env]['database'])}` - raise 'Error dumping database' if $?.exitstatus == 1 - File.open(filename, "a") { |f| f << "SET search_path TO #{ActiveRecord::Base.connection.schema_search_path};\n\n" } - when /sqlite/ - dbfile = abcs[Rails.env]['database'] - `sqlite3 #{dbfile} .schema > #{filename}` when 'sqlserver' `smoscript -s #{abcs[Rails.env]['host']} -d #{abcs[Rails.env]['database']} -u #{abcs[Rails.env]['username']} -p #{abcs[Rails.env]['password']} -f #{filename} -A -U` when "firebird" |