2013-10-15 12 views
6

Ich habe Probleme, Rails, Postgres Travis zur Arbeit zu bekommen. Erhalte einen Datenbankverbindungsfehler, wenn die Tests gestartet werden.Einrichten von travis.ci mit Rails und Postgres

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 

und database.travis.yml

test: 
    adapter: postgresql 
    database: myapp_test 
    username: postgres 

Ich habe separate Datenbank Konfiguration verwendet werden.

Irgendwelche Ahnung, was ich falsch mache? Befolgen Sie die Dokumentation fast genau in http://about.travis-ci.org/docs/user/database-setup/, außer ich muss Datenbank-Konfiguration an den richtigen Ort kopieren.

Antwort

0

Das Problem war, dass ich den Elasticsearch Service auf Travis aktivieren musste. Das Hinzufügen von Datensätzen zur Datenbank erfordert eine Indexierung, und die abgewiesene Verbindung wurde mit einem nicht vorhandenen elastischen Suchserver hergestellt.

+0

Ist da Irgendwo erklärt, warum Sie einen Elasticsearch Server benötigen? –

+0

@MarioUher meine Testsuite hatte Tests, die einen Server erwarteten – mehulkar

+0

Ah ok. Wurde nirgendwo erwähnt und die offiziellen Dokumente enthielten auch einen Link zu einem elastischen Suchpaket. Also war ich sehr verwirrt. Aber dankbar ist die Unterstützung von Travis wirklich gut und hat mir bei meinem Problem geholfen. –

1

Warum tun Sie das

bundle exec rake db:migrate 
bundle exec rake db:test:prepare 

Der db: test: prepare wird die Entwicklungsdatenbank, um zu versuchen und zuzugreifen, die nicht existiert. Und der Rake db: migrate sollte automatisch von Travis ausgeführt werden.

+0

schließen, beide oben genannten Befehle werden für den Entwickler ausgeführt Umgebung. – rb512

+0

Rake db: test: Prepare greift nicht auf die Entwicklungs-db ich denke nicht. http://StackOverflow.com/a/15170024/986415 – mehulkar

+0

versuchen, ohne diese beiden Befehle obwohl – mehulkar

0

Basierend auf dem doc, sollten Sie auf dem postgresql Service ersten

services: 
    - postgresql 

und geben Sie den DB-Typ mit (optional) drehen:

env: 
     - DB=pgsql 

HINWEIS: postgresql und postgres wird nicht funktionieren. Bitte benutzen Sie pgsql !!! Hier

ist der vollständige Code, der für mich gearbeitet:

.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, ich habe auch die Datei database.yml mit dem gleichen Inhalt wie config/database.yml.travis

Verwandte Themen