指定环境时 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 是来源。
我正在使用 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
.
您需要将 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 是来源。