【问题标题】:rake db:dump fails when specifying an environment指定环境时 rake db:dump 失败
【发布时间】:2017-04-08 13:50:52
【问题描述】:

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

使用

的常规调用
rake db:dump

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

RAILS_ENV=development-mysql rake db:dump

命令失败:

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

感谢您的想法。

【问题讨论】:

标签: ruby-on-rails database rake yaml


【解决方案1】:

也许yaml_db gem 位于 Gemfile 的 development 组中。这导致如果您运行 RAILS_ENV=development-mysql rake db:dump Bundler 只会加载常规 gem,而不是来自 development-mysql 的 gem。

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

【讨论】:

  • 非常感谢@timo-shilling。就是这样。我不小心把它放到了开发组中
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多