25

開発環境でrake db:migrate RAILS_ENV=testそれぞれの後に自動的に行う方法はありますか?rake db:migrate

私はguardguard-rspecを実行していますが、ブラウザーで手動で機能していても、テストが失敗することに本当に悩まされています。

rake db:migrate:testデータベースの変更後に電話をかけるのを忘れてしまったことを理解するために、開発を一時停止するたびに少なくとも15分かかりました。

すでにガードを使用しているので、プロジェクトにガードレーキを追加することも考えましたが、どのファイルを見るべきかわかりません。development.sqlite3を見るrake db:migrate RAILS_ENV=testと、ブラウザを介してレコードを操作するたびに起動されるため、これは本当に必要なことではありません。

誰かが私の問題を手伝ってくれますか?

4

7 に答える 7

19

おそらく、.bashrcファイルにコマンドエイリアスを作成するだけです。

~/.bashrc

alias rake_db_migrate='rake db:migrate db:test:prepare'

「ターミナル」

$ rake_db_migrate
于 2011-08-03T16:36:03.980 に答える
3

私はこのようにエイリアスを使用することを好みます:

あなたの~/.bashrc

alias migrate='rake db:migrate && rake db:test:prepare'

データベースをリセットしなかったことを思い出すためだけに、テストが合格しない理由を理解しようとして 30 分を費やすのは簡単です。これでその問題は解決します。

于 2013-05-20T21:59:37.580 に答える
2

私が非常に気に入っているオプションは、別の rake スクリプトで実際のタスクをオーバーライドすることです。これは、移行の実行後に自動的に呼び出されます。このように、データベースを移行した後は常に ERD ダイアグラムを作成します。

# lib/tasks/database.rake
namespace :db do
  desc 'Additional migrate task that creates the diagram'
  task :migrate do
    if Rails.env.development?
      Rake::Task['diagram:erd'].invoke
    end
  end
end

だからあなたの場合:

# lib/tasks/database.rake
namespace :db do
  desc 'Additional migrate task that creates the diagram'
  task :migrate do
    `rake db:migrate RAILS_ENV=test`
  end
end

もう 1 つの方法は、次のコマンドを実行して、新しいスキーマをテスト データベースに複製することです。

rake db:migrate db:test:clone
于 2014-06-12T07:21:10.623 に答える
2

高速化: alias migrate='rake db:migrate db:test:prepare'(これを に追加すると.bashrc、Rails が 1 回だけ読み込まれます)

于 2013-10-21T19:29:01.197 に答える
0

の使用に関する最初の質問への回答として、データベースを移行するたびに更新される をご覧くださいguard-rakedb/schema.rbただし、ロールバックを行うと、このファイルも変更されるため、スキーマ定義行から移行バージョンを引き出すdb/schma.rbか、rake db:test:prepare代わりにrake db:migrate RAILS_ENV=test.

これは脆いように思われるので、シェル エイリアスを使用する方がおそらく良い方法です。もっと良い方法があればいいのに!

于 2013-10-08T19:36:28.310 に答える