我需要在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服务器吗?
答案 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