指定环境时 rake db:dump 失败

rake db:dump fails when specifying an environment

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

常规调用

rake db:dump

按预期工作。但是当我指定另一个环境时

RAILS_ENV=development-mysql rake db:dump

命令失败:

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

感谢您的想法。

可能 yaml_db gem 在您的 Gemfile 的 development 组中。这导致这样一个事实,如果你 运行 RAILS_ENV=development-mysql rake db:dump Bundler 只加载一般的 gems 而不是 development-mysql.

的 gems

您需要将 yaml_db 添加到名为 development-mysql 的组中。

不使用 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 是来源。