我使用gem yaml_db生成数据库转储。
使用
进行常规调用rake db:dump
按预期工作。但是,当我指定其他环境时,如
RAILS_ENV=development-mysql rake db:dump
命令失败并显示:
Don't know how to build task 'db:dump'
感谢您的想法。
答案 0 :(得分:2)
也许yaml_db
gem位于Gemfile的development
组中。这导致如果你运行RAILS_ENV=development-mysql rake db:dump
Bundler只加载一般宝石而不加载来自development-mysql
的宝石。
您需要将yaml_db
添加到名为development-mysql
的小组。
答案 1 :(得分:0)
如果不使用gem,则可以使用(RAILS_ENV=production) rake db:dump
转储数据库。
在您的 lib / tasks / db.rake
namespace :db do
desc "Dumps the database to backups"
task :dump => :environment do
cmd = nil
with_config do |app, host, db, user|
cmd = "db_password pg_dump -h host -d #{db} -U db_username > /path/to/file/#{db}.psql"
end
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
Here是来源。