【问题标题】:Setting up travis.ci with Rails and Postgres使用 Rails 和 Postgres 设置 travis.ci
【发布时间】:2013-10-15 03:19:59
【问题描述】:

我无法让 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/ 中的文档进行操作,但我必须将数据库配置复制到正确的位置。

【问题讨论】:

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


    【解决方案1】:

    你为什么要这样做

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

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

    【讨论】:

    • 关闭,以上两个命令都会在开发环境下运行。
    • rake db:test:prepare 不访问我不认为的开发数据库。 stackoverflow.com/a/15170024/986415
    • 是的,如果不运行迁移,travis 不会做任何事情。 travis-ci.org/collegedesis/collegedesis.com/builds/12551777
    • Travis 在测试环境中运行。 rake db:test:prepare 将尝试转储开发数据库并将模式加载到测试环境中。这不应该是必要的。 Travis 应该直接针对测试数据库运行迁移。
    • 为了清楚起见,运行 bundle exec rake db:migrate,省略 db:test:prepare
    【解决方案2】:

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

    【讨论】:

    • 是否有任何地方解释了为什么需要弹性搜索服务器?
    • @MarioUher 我的测试套件中的测试需要服务器可用
    • 嗯,好的。没有在任何地方提及,官方文档也包含指向弹性搜索包的链接。所以我很困惑。但感谢 Travis 的支持非常好,帮助我解决了我的问题。
    【解决方案3】:

    基于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
    

    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相同

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-09
      • 2018-12-25
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 2013-11-17
      • 1970-01-01
      • 2021-07-09
      相关资源
      最近更新 更多