Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails database setup on Travis-CI

Tags:

I'm trying to use Travis Continuous Integration on a Rails project. The documentation says that the test db must be configured as following for SQLite3:

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

But I'd like to keep my default configuration for local tests. Is it possible to keep both my local settings and the Travis requirements?

like image 848
luizbranco Avatar asked Feb 17 '12 00:02

luizbranco


1 Answers

My solution for this problem is fully based on a blog post with a few differences:

  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. I don't have config/database.yml in source tree.

Here is full listing for both files:

# .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 
like image 199
wik Avatar answered Oct 13 '22 00:10

wik