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、dbを作成し、移行とシードを実行する実行が可能です。

データベースを完全にリセットする場合は、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 に答える