Reputation: 4974
I'm having trouble getting Rails, postgres travis to work. Keep getting a database connection error when the tests start running.
Errno::ECONNREFUSED: Connection refused - connect(2)
.travis.yml
language: ruby
rvm:
- "1.9.3"
before_script:
- cp config/database.travis.yml config/database.yml
- psql -c 'create database myapp_test;' -U postgres
- bundle exec rake db:migrate --trace
- bundle exec rake db:test:prepare --trace
script:
- RAILS_ENV=test bundle exec rake spec
gemfile: Gemfile.ci
and database.travis.yml
test:
adapter: postgresql
database: myapp_test
username: postgres
I have to use separate database config.
Any clue what I'm doing wrong? Following the documentation almost exactly in http://about.travis-ci.org/docs/user/database-setup/ except I have to copy database config over to the right place.
Upvotes: 8
Views: 3672
Reputation: 795
Based on the doc, you should turn on the postgresql service first
services:
- postgresql
And specify the DB type with (optional) :
env:
- DB=pgsql
NOTE: postgresql
and postgres
WILL NOT WORK. Please use pgsql
!!!
Here is the full code that worked for me:
.travis.yml
language: ruby
rvm:
- 2.2
env:
- DB=pgsql
services:
- 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.yml.travis config/database.yml
- psql -c 'create database courseselect_test;' -U postgres
config/database.yml.travis
default: &default
adapter: postgresql
encoding: unicode
pool: 5
development:
<<: *default
database: courseselect_development
test:
<<: *default
database: courseselect_test
production:
<<: *default
database: courseselect_developement
BTW, I also have the file database.yml
with the same content as config/database.yml.travis
Upvotes: 0
Reputation: 4974
The problem was that I needed to enable the elasticsearch service on travis. Adding records to the database requires indexing and the refused connection was to a nonexistent elasticsearch server.
Upvotes: 1
Reputation: 4545
Why are you doing the
bundle exec rake db:migrate
bundle exec rake db:test:prepare
The db:test:prepare is going to try and access the development database, which doesn't exist. And the rake db:migrate should be automatically run by Travis.
Upvotes: 2