使用Rails和Postgres设置travis.ci

时间:2013-10-15 03:19:59

标签: ruby-on-rails postgresql travis-ci

我无法获得Rails,postgres travis工作。测试开始运行时不断收到数据库连接错误。

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

database.travis.yml

test:
  adapter: postgresql
  database: myapp_test
  username: postgres

我必须使用单独的数据库配置。

任何线索我做错了什么?几乎完全在http://about.travis-ci.org/docs/user/database-setup/之后的文档,除了我必须将数据库配置复制到正确的位置。

3 个答案:

答案 0 :(得分:2)

你为什么要这样做

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

db:test:prepare将尝试访问不存在的开发数据库。 rake db:migrate应该由Travis自动运行。

答案 1 :(得分:0)

问题是我需要在travis上启用elasticsearch服务。将记录添加到数据库需要建立索引,拒绝连接是指不存在的elasticsearch服务器。

答案 2 :(得分:0)

基于doc,您应首先打开postgresql服务

services:
  - postgresql

使用(可选):

指定数据库类型
    env:
      - DB=pgsql

注意:postgresqlpostgres无效。请使用pgsql !!!

以下是适用于我的完整代码:

.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

配置/ 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,我的文件database.ymlconfig/database.yml.travis

的内容相同