每当我有数据库结构的变更或新的迁移文件时,我都会运行这个命令:
rake db:drop db:create db:migrate db:seed
有没有预先构建的等效方法来做这件事?
从我所读的内容中,我认为rake db:reset
并不完全是同样的东西,但我可能错了。
rake db:drop db:create db:migrate db:seed
有没有预先构建的等效方法来做这件事?
从我所读的内容中,我认为rake db:reset
并不完全是同样的东西,但我可能错了。
namespace :db_tasks do
desc "Rebuild database"
task :rebuild, [] => :environment do
raise "Not allowed to run on production" if Rails.env.production?
Rake::Task['db:drop'].execute
Rake::Task['db:create'].execute
Rake::Task['db:migrate'].execute
Rake::Task['db:seed'].execute
end
end
然后只需运行bundle exec rake db_tasks:rebuild
rake db:drop
然后运行 rake db:setup
。
db:setup
会运行 rake db:create db:schema:load 和 db:seed
。rake db:reset && rake db:seed
(注意:您必须更新 db/schema.rb 文件)
rake db:migrate:reset && rake db:seed
rake db:migrate:reset
会从头开始重新运行所有迁移,而 db:reset
则根据 schema.rb
文件简单地重新生成数据库。 - BenKoshyrake db:prepare
命令,该命令将创建数据库、运行迁移并进行种子数据填充。rake db:drop && rake db:prepare
命令。首先创建任务文件(lib/tasks/db.rake),内容如下:
rails g task db reseed
然后在其中写入:
namespace :db do
desc "Reseed database task"
task reseed: [ 'db:drop', 'db:create', 'db:migrate', 'db:seed' ] do
puts 'Reseeding completed.'
end
end
db:migrate
命令就足够了。 - Andrew Marshall