ruby-on-rails - 不使用 CLI 将 schema.rb 部署到 Heroku

标签 ruby-on-rails postgresql heroku command-line-interface

我正在使用我大学的 ISP,它阻塞了 5000 端口,所以我不能 rake db:setup 到 heroku。我最近运行了 heroku rake db:reset 以便我可以创建一个新数据库,但现在我不知道如何设置它。有什么简单的方法可以做到这一点?我看过很多关于 heroku pg:push 的文章,但我似乎无法弄清楚我需要为此添加什么。如果我的 5000 端口被阻止,我该如何设置我的 postgres 数据库?

编辑:当运行 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 documentation我发现了这个:

The heroku run command opens a connection to Heroku on port 5000. If your local >network or ISP is blocking port 5000, or you are experiencing a connectivity issue, you will see an error similar to:

  $ heroku run rails console
    Running rails console attached to terminal...
    Timeout awaiting process

You can test your connection to Heroku by trying to connect directly to rendezvous.runtime.heroku.com on port 5000 using telnet. A successful session will look like this:

  $ 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 '^]'

If you do not get this output, your computer is being blocked from accessing our services. We recommend contacting your IT department, ISP, or firewall manufacturer to move forward with this issue.

您使用的是什么代理?您的 ISP 阻止端口 5000 的说法很可能是正确的,因为 heroku run 不执行 HTTP 调用,而是使用 TCP 通过端口 5000 连接并使用自己的协议(protocol)。

我找到了这个 Stackoverflow post提到通过在后台运行命令来解决这个问题:

$ heroku run:detached rake db:migrate

然后跟踪日志以查看发生了什么:

$ heroku logs -p run.1 -t   

除此之外,我不知道有什么可以绕过 5000 端口上的阻止。

关于ruby-on-rails - 不使用 CLI 将 schema.rb 部署到 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46994765/

相关文章:

ruby-on-rails - 通过哈希值查找哈希数组的交集

python-3.x - 使用 python 连接到 AWS RDS Postgres 数据库

sql - 查询行 9,000,000 至 10,000,000

ruby-on-rails - 非持久 ActiveRecord 模型属性

ruby-on-rails - Rails 自定义验证方法未被调用

sql - 两个数据库之间的通信

javascript - Heroku Foreman 在 Express.js bodyParser() 调用上退出

postgresql - Heroku:从 MySQL 迁移数据库后出现 Postgres 类型运算符错误

node.js - Express API端点路由部署到Heroku时返回404,在本地工作

javascript - rails : update table cell without refresh by using Ajax