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
ます。これは物事を少し台無しにするようです。