Question

Je suis en train d'utiliser Travis Intégration continue sur un projet Rails. La documentation indique que le test db doit être configuré comme suit pour SQLite3:

test:
  adapter: sqlite3
  database: ":memory:"
  timeout: 500

Mais je voudrais garder ma configuration par défaut pour les tests locaux. Est-il possible de garder mes deux paramètres locaux et les exigences Travis?

Était-ce utile?

La solution

Ma solution à ce problème est entièrement basé sur un billet de blog avec quelques différences:

  1. Paramètres spécifiques Travis CI dans config/database.travis.yml;
  2. cp config/database.travis.yml config/database.yml avant la section de script de .travis.yml;
  3. Je n'ai pas config/database.yml dans l'arbre source.

Voici la liste complète pour les fichiers:

# .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

Autres conseils

poste de blog

@ ne mrm dit rien au sujet de répondre à votre question. Je fait face au même problème où mes lettres de créance postgreql sont différentes sur ma machine locale que travis par défaut. C'est la solution la plus simple, je suis venu avec:

# config/database.yml
test:
  adapter: postgresql
  database: medscraper_test
  username: <%= ENV['TRAVIS'] ? 'postgres' : 'MY_TEST_USERNAME' %>
  password: <%= ENV['TRAVIS'] ? '' : 'MY_TEST_PASSWORD' %>

Notez que Travis CI définit automatiquement la variable d'environnement TRAVIS. Votre solution serait:

# config/database.yml
test:
  adapter: sqlite3
  database: <%= ENV['TRAVIS'] ? '":memory:"' : 'db/test.sqlite3' %>
  timeout: 500

Je viens d'écrire un blog décrivant comment faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top