ruby on rails - yml - Configuración de la base de datos Rails en Travis-CI
travis github (3)
Acabo de escribir una entrada de blog que describe cómo hacer esto.
Estoy tratando de usar la integración continua de Travis en un proyecto de Rails. La documentación dice que la base de datos de prueba debe configurarse como sigue para SQLite3:
test:
adapter: sqlite3
database: ":memory:"
timeout: 500
Pero me gustaría mantener mi configuración predeterminada para las pruebas locales. ¿Es posible mantener tanto la configuración local como los requisitos de Travis?
La publicación del blog de @mrm no dice nada acerca de responder a tu pregunta. Me enfrenté al mismo problema en el que mis credenciales de Postgreql son diferentes en mi máquina local que las predeterminadas de Travis. Esta es la solución más simple que se me ocurrió:
# config/database.yml
test:
adapter: postgresql
database: medscraper_test
username: <%= ENV[''TRAVIS''] ? ''postgres'' : ''MY_TEST_USERNAME'' %>
password: <%= ENV[''TRAVIS''] ? '''' : ''MY_TEST_PASSWORD'' %>
Tenga en cuenta que Travis CI establece automáticamente la variable de entorno TRAVIS. Tu solución sería:
# config/database.yml
test:
adapter: sqlite3
database: <%= ENV[''TRAVIS''] ? ''":memory:"'' : ''db/test.sqlite3'' %>
timeout: 500
Mi solución para este problema se basa completamente en una publicación de blog con algunas diferencias:
- Configuraciones específicas de Travis CI en
config/database.travis.yml
; -
cp config/database.travis.yml config/database.yml
en la sección anterior a la secuencia de.travis.yml
de.travis.yml
; - No tengo
config/database.yml
en el árbol de origen.
Aquí está la lista completa de ambos archivos:
# .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