Travis CI:启动rails服务器

时间:2018-04-21 09:27:08

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

我需要在Travis上启动rails服务器来运行集成测试。 我已将此添加到配置文件中:

before_script:
  - psql -c 'create database scalia_test;' -U postgres
  - "bundle exec rails server -p 3000 &"

但是,我仍然收到赛普拉斯的错误:

http://localhost:3000/users/sign_in
We attempted to make an http request to this URL but the request failed without a response.
We received this error at the network level:
  > Error: connect ECONNREFUSED 127.0.0.1:3000
Common situations why this would fail:
  - you don't have internet access
  - you forgot to run / boot your web server
  - your web server isn't accessible
  - you have weird network configuration settings on your computer
The stack trace for this error is:
Error: connect ECONNREFUSED 127.0.0.1:3000
    at Object.exports._errnoException (util.js:1024:11)
    at exports._exceptionWithHostPort (util.js:1047:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1150:14)

有人知道如何在Travis上启动Rails服务器吗?

3 个答案:

答案 0 :(得分:3)

您正在使用&将命令发送到后台,然后您正在运行测试吗?

当你运行测试时,Travis仍然在后台启动你的Rails服务器,因此错误地说它无法连接。在我看来,它不需要对端口绑定做任何事情。

为了解决这个问题,你应该在启动后使用-d参数来守护它:

before_script:
  - psql -c 'create database scalia_test;' -U postgres
  - "bundle exec rails server -p 3000 -d"

rails服务器将阻塞,直到它侦听端口3000,然后将自己发送到后台并继续运行脚本。

请注意,在测试运行后,您可以使用以下命令再次终止rails服务器:

kill -9 $(cat tmp/pids/server.pid)

否则您将从travis获得超时或其他错误。

答案 1 :(得分:0)

尝试将rails绑定到该端口中的环回IP

bundle exec rails s -p 3000 -b 127.0.0.1

答案 2 :(得分:-2)

可能该端口正在使用中。在终端中键入ClientRegistrationService以查看该端口是否正在使用 你可以尝试使用不同的端口启动服务器,如lsof -i :8000