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?

Author: luizbranco, 2012-02-17

3 answers

Moje rozwiązanie tego problemu jest w pełni oparte na blogu z kilkoma różnicami:

  1. Travis CI specific settings in config/database.travis.yml;
  2. cp config/database.travis.yml config/database.yml in before script section of .travis.yml;
  3. 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
 54
Author: wik,
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
 4
Author: hammady,
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ć.

 1
Author: mrm,
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