使用Rails和Postgres设置Travis.ci

8
我在安装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个回答

2
你为什么要这样做?
bundle exec rake db:migrate
bundle exec rake db:test:prepare

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


关闭,以上两个命令将在开发环境下运行。 - rb512
rake db:test:prepare 不会访问开发数据库,我认为。https://dev59.com/tmUp5IYBdhLWcg3wmIYt#15170024 - mehulkar
是的,如果不运行迁移,travis 就什么也做不了。https://travis-ci.org/collegedesis/collegedesis.com/builds/12551777 - mehulkar
Travis在测试环境中运行。rake db:test:prepare将尝试转储dev数据库并将模式加载到测试环境中。这是不必要的。Travis应该直接针对测试数据库运行迁移。 - Peter Goldstein
只是为了明确起见,请运行bundle exec rake db:migrate,不要运行db:test:prepare。 - Peter Goldstein
@PeterGoldstein,不是的 https://travis-ci.org/collegedesis/collegedesis.com/builds/12578085 - mehulkar

1
问题在于我需要在travis上启用elasticsearch服务。向数据库添加记录需要索引,而被拒绝的连接是到不存在的elasticsearch服务器的连接。

有没有地方解释为什么需要一个 Elasticsearch 服务器? - Mario Uher
@MarioUher 我的测试套件中有一些测试期望服务器可用。 - mehulkar
啊,好的。这个并没有在任何地方提到,而且官方文档还包含了一个 Elastic Search 包的链接,所以我非常困惑。但是很感谢 Travis 的支持,他们帮助我解决了问题。 - Mario Uher

0
根据文档,您应该先启动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

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

顺便说一下,我也有一个名为database.yml的文件,其内容与config/database.yml.travis相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接