質問

初期イザーから実行するコードがいくつかあり、正常に動作します。 (YAMLファイルからデータベースにデフォルト設定を保存します Rails-Settings-Cache 宝石。)

しかし、Travis CIでこれを実行すると、ゼロから移行しているため、テーブルがまだ存在しないために初期化が失敗します。

コードを実行する方法はありますか? 移行ですが、アプリケーションが開始される前は?

役に立ちましたか?

解決

したがって、私はこれを行うのが好きではありませんが、DB:移行中に初期イザーが実行されるのを防ぐ簡単な方法ですが、アプリケーションの開始またはテスト実行で実行することは、テーブルが存在するかどうかをテストする節でラップすることです。したがって、既存の初期化コードを使用してラップした場合

if ActiveRecord::Base.connection.table_exists? 'table_name'
   ....
end

ここで、「table_name」は欠落しているテーブルの名前であり、Rake db:移行と仕様の実行が正常に完了できるはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top