ruby Rails负责转储和恢复PostgreSQL数据库的任务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby Rails负责转储和恢复PostgreSQL数据库的任务相关的知识,希望对你有一定的参考价值。

# dump the development db
rake db:dump

# dump the production db
RAILS_ENV=production rake db:dump

# dump the production db & restore it to the development db
RAILS_ENV=production rake db:dump
rake db:restore

# note: config/database.yml is used for database configuration,
#       but you will be prompted for the database user's password
# lib/tasks/db.rake
namespace :db do

  desc "Dumps the database to db/APP_NAME.dump"
  task :dump => :environment do
    cmd = nil
    with_config do |app, host, db, user|
      cmd = "pg_dump --host #{host} --username #{user} --verbose --clean --no-owner --no-acl --format=c #{db} > #{Rails.root}/db/#{app}.dump"
    end
    puts cmd
    exec cmd
  end

  desc "Restores the database dump at db/APP_NAME.dump."
  task :restore => :environment do
    cmd = nil
    with_config do |app, host, db, user|
      cmd = "pg_restore --verbose --host #{host} --username #{user} --clean --no-owner --no-acl --dbname #{db} #{Rails.root}/db/#{app}.dump"
    end
    Rake::Task["db:drop"].invoke
    Rake::Task["db:create"].invoke
    puts cmd
    exec cmd
  end

  private

  def with_config
    yield Rails.application.class.parent_name.underscore,
      ActiveRecord::Base.connection_config[:host],
      ActiveRecord::Base.connection_config[:database],
      ActiveRecord::Base.connection_config[:username]
  end

end

以上是关于ruby Rails负责转储和恢复PostgreSQL数据库的任务的主要内容,如果未能解决你的问题,请参考以下文章

ruby Rails负责转储和恢复PostgreSQL数据库的任务

无法在heroku上恢复postgres转储

Ruby On Rails Heroku Postgres数据库SSL连接

你好 postgres 数据库连接错误 Ruby on rails

IntegrityError:postgres 从转储恢复后,所有具有 ForeignKey 的模型/字段的“id”列中的空值

ruby 将表的id重置为在rails中的postgres中开始