rake db:dump在指定环境时失败

时间:2016-11-24 10:05:47

标签: ruby-on-rails database rake yaml

我使用gem yaml_db生成数据库转储。

使用

进行常规调用
rake db:dump

按预期工作。但是,当我指定其他环境时,如

RAILS_ENV=development-mysql rake db:dump

命令失败并显示:

Don't know how to build task 'db:dump'

感谢您的想法。

2 个答案:

答案 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是来源。