Konfiguracja bazy danych Rails na Travis-CI
Próbuję wykorzystać ciągłą integrację Travis ' a w projekcie Rails. Dokumentacja mówi, że test db musi być skonfigurowany w następujący sposób dla SQLite3:
test:
adapter: sqlite3
database: ":memory:"
timeout: 500
Ale chciałbym zachować domyślną konfigurację dla lokalnych testów. Czy możliwe jest zachowanie zarówno moich ustawień lokalnych, jak i wymagań Travis?
3 answers
Moje rozwiązanie tego problemu jest w pełni oparte na blogu z kilkoma różnicami:
- Travis CI specific settings in
config/database.travis.yml
; -
cp config/database.travis.yml config/database.yml
in before script section of.travis.yml
; - nie mam
config/database.yml
w drzewie źródłowym.
Oto pełna lista obu plików:
# .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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-08 09:02:16
@mrm ' s blog post nie mówi nic o odpowiedzi na twoje pytanie. Spotkałem się z tym samym problemem, w którym moje poświadczenia postgreql są inne na mojej lokalnej maszynie niż travis default. Jest to najprostsze rozwiązanie, jakie wymyśliłem:
# config/database.yml
test:
adapter: postgresql
database: medscraper_test
username: <%= ENV['TRAVIS'] ? 'postgres' : 'MY_TEST_USERNAME' %>
password: <%= ENV['TRAVIS'] ? '' : 'MY_TEST_PASSWORD' %>
Zauważ, że Travis CI automatycznie ustawia zmienną środowiskową TRAVIS. Twoje rozwiązanie to:
# config/database.yml
test:
adapter: sqlite3
database: <%= ENV['TRAVIS'] ? '":memory:"' : 'db/test.sqlite3' %>
timeout: 500
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-17 05:50:04
Właśnie napisałem wpis na blogu opisujący jak to zrobić.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-09 03:44:09