7

每次对架构或新迁移文件进行更改时,我都会运行以下命令:

rake db:drop db:create db:migrate db:seed

是否有预先构建的等效方法来执行此操作?

我从我所读到的内容中认为rake db:reset这并不完全一样,但我可能是错的。

4

5 回答 5

6

您可以为此创建一个自定义 rake 任务 - lib/tasks/db_rebuild_all.rake

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

于 2013-02-02T20:39:49.097 回答
3
  • 运行rake db:reset && rake db:seed(注意:您必须更新 db/schema.rb 文件)

  • rake db:migrate:reset && rake db:seed
于 2014-10-13T07:48:36.377 回答
2

你可以运行rake db:drop然后rake db:setup

db:setup会跑rake db:create db:schema:load and db:seed

但是,为什么每次进行新迁移时都要删除并重新创建数据库?这就是迁移的目的,对现有数据库进行增量更改。

于 2013-02-02T16:37:13.957 回答
0

首先使用以下命令创建任务文件 (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
于 2015-10-21T22:47:33.187 回答
0

从 Rails 6 开始,您可以运行rake db:prepare创建数据库、运行迁移和种子

如果要完全重置数据库,请运行rake db:drop && rake db:prepare

https://guides.rubyonrails.org/v6.0/6_0_release_notes.html#active-record-notable-changes

于 2022-03-01T11:33:56.460 回答