当尝试使用现有的git repo上传Sinatra应用程序时,“Heroku推送被拒绝,没有检测到Cedar支持的应用程序”

我有一个现有的git repo用于我的个人网站,我将其移植到Sinatra(主要用于模板,它是一个静态站点)。 我不想丢失/重置这个git存储库。

当我尝试推送到Heroku时,我收到以下错误。 我有一个config.ru文件,一个Gemfile和一个Gemfile.lock,以及Sinatra的其他一些东西。 运行rackup工作,运行bundle exec rackup工作,我没有收到Heroku关于缺少依赖项的任何警告。

我错过了什么吗? 我可以发布我的网站的目录结构,如果它会有所帮助(尽管它是近源的)。

 ~/Repos/website ➜ gp heroku master Counting objects: 2836, done. Compressing objects: 100% (2669/2669), done. Writing objects: 100% (2836/2836), 3.48 MiB | 252 KiB/s, done. Total 2836 (delta 481), reused 2117 (delta 155) -----> Heroku receiving push ! Heroku push rejected, no Cedar-supported app detected To git@heroku.com:APP_NAME_HERE.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'git@heroku.com:APP_NAME_HERE.git' 

Cedar应用程序应该识别config.ru文件并为您创建一个Web进程,因此git可能无法跟踪某些基本文件。 检查config.ruGemfileGemfile.lock是否都已提交(您可以使用git status ,但请注意,它不会输出任何被忽略的文件,因此您还应该检查.gitignore文件)。

如果提交了所有文件,您还可以尝试指定Web进程在Procfile使用的Procfile 。 有关更多信息,请参阅Heroku文档:

  • Ruby入门:使用Procfile声明流程类型
  • 使用Procfile声明和缩放过程类型

问题解决了。 我正在开发一个专门用于Heroku / Sinatra支持的git分支,结果发现我正在运行git push heroku master ,它将本地主人推送到远程主人。 主分支没有有效的Heroku应用程序。 我假设它会将当前的本地分支推送到远程主分支,但事实并非如此。 git push sinatra:master解决了这个问题。

对于那些发现接受的答案无法解决问题的人,这个相关的问题可能会提供解决方案: “Heroku推送被拒绝,没有检测到Cedar支持的应用”,当尝试上传带有现有git仓库的Sinatra应用时