在没有CLI的情况下将schema.rb部署到Heroku
我正在使用我的大学的ISP阻止5000端口,所以我不能rake db:setup
到heroku。我最近运行了heroku rake db:reset
,以便我可以创建一个新的数据库,但现在我不知道如何设置它。有没有简单的方法来做到这一点?我看过很多关于heroku pg:push
的文章,但似乎无法弄清楚我需要为此付出什么。鉴于我的5000端口被阻塞,我如何设置我的postgres数据库?在没有CLI的情况下将schema.rb部署到Heroku
编辑:当运行heroku run rake db:migrate
我收到以下错误信息:ETIMEDOUT: connect ETIMEDOUT 50.19.103.36:5000
编辑2:这里是dig rendezvous.runtime.heroku.com
`
<<>> DiG 9.8.3-P1 <<>> rendezvous.runtime.heroku.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49376
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 13, ADDITIONAL: 5
;; QUESTION SECTION:
;rendezvous.runtime.heroku.com. IN A
;; ANSWER SECTION:
rendezvous.runtime.heroku.com. 450 IN CNAME ec2-50-19-103-36.compute-1.amazonaws.com.
ec2-50-19-103-36.compute-1.amazonaws.com. 604800 IN A 50.19.103.36
;; AUTHORITY SECTION:
compute-1.amazonaws.com. 1 IN NS pdns1.ultradns.net.
compute-1.amazonaws.com. 1 IN NS ns4.p31.dynect.net.
compute-1.amazonaws.com. 1 IN NS pdns3.ultradns.org.
compute-1.amazonaws.com. 1 IN NS u4.amazonaws.com.
compute-1.amazonaws.com. 1 IN NS u3.amazonaws.com.
compute-1.amazonaws.com. 1 IN NS ns3.p31.dynect.net.
compute-1.amazonaws.com. 1 IN NS ns2.p31.dynect.net.
compute-1.amazonaws.com. 1 IN NS pdns5.ultradns.info.
compute-1.amazonaws.com. 1 IN NS u6.amazonaws.com.
compute-1.amazonaws.com. 1 IN NS u1.amazonaws.com.
compute-1.amazonaws.com. 1 IN NS ns1.p31.dynect.net.
compute-1.amazonaws.com. 1 IN NS u5.amazonaws.com.
compute-1.amazonaws.com. 1 IN NS u2.amazonaws.com.
;; ADDITIONAL SECTION:
pdns1.ultradns.net. 1970 IN A 204.74.108.1
pdns1.ultradns.net. 1970 IN AAAA 2001:502:f3ff::1
ns3.p31.dynect.net. 69968 IN A 208.78.71.31
pdns3.ultradns.org. 12753 IN A 199.7.68.1
pdns3.ultradns.org. 43539 IN AAAA 2610:a1:1015::1
;; Query time: 72 msec
;; SERVER: 152.19.240.8#53(152.19.240.8)
;; WHEN: Sat Oct 28 19:50:08 2017
;; MSG SIZE rcvd: 500`
经过大量工作,我发现这只是我大学的一个港口区块。如果你遇到这个问题并且在大学,解决这个问题的最好办法就是去当地一家提供免费无线网络的咖啡店。 Heroku CLI依靠运行的端口rails console
,rake db:migrate
和许多其他命令依赖于您能够通过此端口保持连接,并且不起作用。感谢Cyzanfar的帮助。
好了,所以我读Heroku documentation我发现这个:
Heroku的运行命令打开端口5000到Heroku的连接如果您的本地>网络或ISP是阻止端口5000,或者你是 遇到连接问题,你将看到类似的错误:
$ heroku run rails console Running rails console attached to terminal... Timeout awaiting process
您可以通过尝试使用telnet在端口5000上直接连接 至
rendezvous.runtime.heroku.com
来测试您与Heroku的连接。一个 成功的会议将是这样的:$ telnet rendezvous.runtime.heroku.com 5000 Trying 50.19.103.36... Connected to ec2-50-19-103-36.compute-1.amazonaws.com. Escape character >is '^]'
如果没有得到这个输出,您的计算机正在从 阻止访问我们的服务。我们建议您联系您的IT部门, ISP或防火墙制造商,以解决此问题。
你使用什么代理?由于heroku run
不会执行HTTP呼叫,因此您最有可能对您的ISP阻止端口5000正确,而是使用端口5000上的TCP进行连接,并使用自己的协议。
,我发现这个Stackoverflow post,所提到的在后台运行的命令得到解决此问题:
$ heroku run:detached rake db:migrate
然后尾巴的日志,看看发生了什么:
比这个我$ heroku logs -p run.1 -t
其他不知道任何可以绕过5000端口块的东西。
运行'heroku run rake db:migrate'时会出现什么错误?请将其添加到您的帖子中。另请查看https://devcenter.heroku。com/articles/one-off-dynos#疑难解答 – Cyzanfar
我看过那个页面,但我无法让我的IT部门打开5000端口,因为它是Windows恶意软件的常见位置。在执行'heroku run rake db:migrate'时刚刚添加了我的代码的结果。我只想找到一种方法来迁移我的schema.rb。我已经尝试过'heroku run:detached rake db:setup',但它不起作用。不知道为什么。 –
你可以运行'dig rendezvous.runtime.heroku.com'并向我们显示输出。 – Cyzanfar