8

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.

3 Answers 3

2

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.

Sign up to request clarification or add additional context in comments.

6 Comments

close, both the above commands will be run for the dev environment.
rake db:test:prepare does not access the development db I don't think. stackoverflow.com/a/15170024/986415
Yeah, without running migrations, travis doesn't do anything. travis-ci.org/collegedesis/collegedesis.com/builds/12551777
Travis runs in the test environment. rake db:test:prepare will attempt to dump the dev database and load the schema into the test environment. It shouldn't be necessary. Travis should run migrations directly against the test db.
Just to be clear, run the bundle exec rake db:migrate, leave out the db:test:prepare
|
1

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.

3 Comments

Is there anywhere explained why you need an elasticsearch server?
@MarioUher my test suite had tests that was expecting a server avaiable
Ah ok. Wasn't mentioned anywhere and the the official docs included a link to an elastic search package as well. So I was very confused. But thankful the support from Travis is really good, and helped me with my problem.
0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.