0

Semaphore Hosted CI Serviceで実行するscript/cibuildスクリプトがあります。これには…</p>

time bundle exec rake db:setup db:test:prepare --trace; echo

…データベースをセットアップし、保留中の移行があるかどうかを確認しますが、何らかの理由で、私の開発マシンでも機能しません。

script/cibuildの内容をストライピングすると、次のようになります。

export RAILS_ENV=test
export RACK_ENV=test

# options to rake 'spec' task
export SPEC_OPTS='--color --format documentation --backtrace spec'

echo "Installing dependencies..."
time bundle install --deployment; echo

echo "Setting-up database..."
time bundle exec rake db:setup db:test:prepare --trace; echo

echo "Running tests..."
time bundle exec rake spec --trace; echo

ビルドは最終的に、セマフォで次のトレースで失敗します。

Running tests...
** Invoke spec (first_time)
** Invoke test:prepare (first_time)
** Invoke db:test:prepare (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:abort_if_pending_migrations
You have 10 pending migrations:
  20130418144736 CreateUsers
  20130424134725 CreateCollections
  20130506124127 AddStaffToUsers
  20130513115848 CreateResourceTypes
  20130513140804 InstallHstore
  20130513141924 CreateResources
  20130513144332 AddCredentialDataToUsers
  20130523155851 RenameSubscriptionDataInResource
  20130531110125 AddProfilePictureToUser
  20130722101545 AddEmailIndexToUser
Run `rake db:migrate` to update your database then try again.

問題はdb:setup db:test:prepare行にあるのではなく、rake spec実行されているときに発生するようです。私はわかりません。

いずれにせよ、自分の開発マシンで実行すると…</p>

rake db:drop:all
rake db:setup db:test:prepare

…最終的には空のテスト データベース (テーブルがないなどのように「空」) になりますが、…</p>

rake db:drop:all
rake db:setup
rake db:test:prepare

… 期待どおり、テスト データベースも作成します。

ある時点で実行していないかのように思われるかもしれませんrake db:migrate(したがって、10 の保留中の移行) が、そうではないことを確信しています。ファイルはありませんがdb/schema.rb、Rails はすべての移行を適用して、最終的なデータベース スキーマに問題なく到達する必要があります。

何かアイデアはありますか?ありがとうございました。

アップデート:

RACK_ENVこの問題は、環境変数の設定やRAILS_ENV環境変数に関連している可能性があると思われtestます。これ物事を少し台​​無しにするようです。

4

0 に答える 0