我看到的所有单一路径都是Heroku欢迎页面,根据here发送的状态代码超过502.
同样根据此heroku HTTP routing guide,如果应用程序发送了无效响应,它也会发送502。我最近在同一台锅炉上部署了另一个应用程序,但这个应用程序并没有太大的不同。
我认为我能想到的两件事是这个应用程序使用open-uri
接受用户输入,并且它在响应中发送(消毒)html。但是我并没有意识到在Heroku上对此进行了修改,我可以通过SSH和open("http://google.com").read
来解决问题。
这是我的procfile:
web: env RACK_ENV=production bundle exec thin start -p $PORT
我的config.ru
:
require './server.rb'
run Server
在localhost上,我使用bundle exec thin start
,一切正常。
我看到heroku ps
的输出结果:
=== web (Free): env RACK_ENV=production bundle exec thin start -p $PORT (1)
web.1: up 2017/03/16 17:53:44 -0700 (~ 19m ago)
我也通过SSH来检查应用程序是否可以运行并且数据库已设置:
heroku run "irb -r ./server.rb"
Running irb -r ./server.rb on ⬢ music-sharing... up, run.2985 (Free)
irb(main):001:0> Audio.count
=> 0
在heroku logs --tail
中,我在提出请求后看到了这种情况:
2017-03-17T01:45:44.022727 + 00:00 heroku [router]:at = info code = H81 desc =" Blank app" method = GET path =" /favicon.ico" host = music-sharing.herokuapp.com request_id = 2e41fca8-0913-4a09-8635-2a26586c3234 fwd =" 73.170.238.232" dyno = connect = service = status = 502 bytes = protocol = https
我还确保应用程序位于根目录:
heroku run bash
Running bash on ⬢ music-sharing... up, run.5955 (Free)
~ $ ls
bin db_config.rb Procfile server.rb
config.ru Gemfile Rakefile tmp
crud_generator.rb Gemfile.lock README.md vendor
db models.rb server_push.rb ws.rb
~ $
答案 0 :(得分:0)
这个答案取决于我在问题中没有包含的内容,所以它有点不公平,但这里的任何地方都是问题:
我正在使用此脚本进行部署:
git subtree push --prefix server heroku master
那是因为我的回购邮件有server/
和client/
个文件夹(两个独立的应用)
由于某种原因,这没有用。
我进入了server/
文件夹,在那里创建了一个新的(临时的,仅部署的)git仓库,提交了所有内容,将其指向heroku远程,然后强制推送。
如果我想出更多关于--prefix
推送无法正常工作的信息(它正在我的其他应用上运行),我会在此处添加。
更新
通过修改脚本来使脚本工作:
git push heroku `git subtree split --prefix server master`:master --force