Travis-CIのRailsデータベースのセットアップ
-
26-10-2019 - |
質問
RailsプロジェクトでTravis Continuous Integrationを使用しようとしています。ドキュメントでは、テストDBはsqlite3の次のように構成する必要があると述べています。
test:
adapter: sqlite3
database: ":memory:"
timeout: 500
しかし、ローカルテスト用のデフォルトの構成を維持したいと思います。私のローカル設定とトラビスの要件の両方を維持することは可能ですか?
解決
この問題に対する私の解決策は完全に基づいています ブログ投稿 いくつかの違いがあります:
- Travis CI固有の設定
config/database.travis.yml
; cp config/database.travis.yml config/database.yml
の前のスクリプトセクション.travis.yml
;- 私は持っていません
config/database.yml
ソースツリーで。
両方のファイルの完全なリストは次のとおりです。
# .travis.yml
language: ruby
rvm:
- 1.9.3
env:
- DB=sqlite
- DB=mysql
- DB=postgresql
script:
- RAILS_ENV=test bundle exec rake db:migrate --trace
- bundle exec rake db:test:prepare
- bundle exec rake
before_script:
- cp config/database.travis.yml config/database.yml
- mysql -e 'create database strano_test'
- psql -c 'create database strano_test' -U postgres
# config/database.travis.yml
sqlite: &sqlite
adapter: sqlite3
database: db/<%= Rails.env %>.sqlite3
mysql: &mysql
adapter: mysql2
username: root
password:
database: strano_<%= Rails.env %>
postgresql: &postgresql
adapter: postgresql
username: postgres
password:
database: strano_<%= Rails.env %>
min_messages: ERROR
defaults: &defaults
pool: 5
timeout: 5000
host: localhost
<<: *<%= ENV['DB'] || "postgresql" %>
development:
<<: *defaults
test:
<<: *defaults
production:
<<: *defaults
他のヒント
@MRMのブログ投稿はあなたの質問に答えることについて何も言っていません。私は、PostGREQLの資格情報がTravisのデフォルトとはローカルマシンで異なるのと同じ問題に直面しました。これは私が思いついた最も簡単な解決策です:
# config/database.yml
test:
adapter: postgresql
database: medscraper_test
username: <%= ENV['TRAVIS'] ? 'postgres' : 'MY_TEST_USERNAME' %>
password: <%= ENV['TRAVIS'] ? '' : 'MY_TEST_PASSWORD' %>
Travis CIはTravis Environment変数を自動的に設定することに注意してください。あなたの解決策は次のとおりです。
# config/database.yml
test:
adapter: sqlite3
database: <%= ENV['TRAVIS'] ? '":memory:"' : 'db/test.sqlite3' %>
timeout: 500
私はちょうど書いた ブログ投稿 これを行う方法を説明します。
所属していません StackOverflow