【问题标题】:Rails 3.2: Heroku push rejected, no Cedar-supported app detectedRails 3.2:Heroku 推送被拒绝,没有检测到 Cedar 支持的应用程序
【发布时间】:2012-03-07 12:03:15
【问题描述】:

Rails 新手在这里。我正在尝试将我的 Rails 3.1/Ruby 1.9.3-p0 应用程序部署到 Heroku 并按照 Heroku 的所有步骤进行操作。但我一直遇到:

Heroku 推送被拒绝,未检测到支持 Cedar 的应用

我已经尝试了this question 中的所有建议,但到目前为止都没有成功。

【问题讨论】:

  • 我意识到我正在运行 ruby​​ 1.9.3-p0 并按照railsapps.github.com/rails-heroku-tutorial.html 中的步骤操作,但到目前为止还没有帮助。会不会是 Heroku 和他们对 1.9.3 的实验性支持?
  • 不,我在 heroku 上运行了一个 1.9.3 的应用程序就好了。你是如何在 heroku 上创建你的应用程序的?你做到了吗:heroku apps:create myapp --stack cedar?
  • 是的,我跑了heroku create myapp --stack cedar
  • 好的,虽然我不认为这是一个修复程序,但我让它工作了!我使用相同的 gemfile 创建了另一个示例应用程序并将其部署到运行良好的 Heroku。然后,我将所有文件从我的另一个应用程序复制到这个新应用程序,并将其推送到同一个 heroku 存储库.. 它工作了!

标签: ruby-on-rails heroku cedar


【解决方案1】:

我也遇到过类似的拒绝。对我有用的是重新初始化 .git 文件。

在命令行中试试:

rm -rf .git
git init
git add .
git commit -am "Reinitialize"
heroku create --stack cedar
git push heroku master

【讨论】:

  • 在你采取这个激烈的步骤之前,你可能会检查你是否在 master 分支上。 Heroku 忽略非主分支。如果这是您的问题,您可以切换到 master 并从那里部署,或者将非 master 分支推送到 heroku 的 master 分支:git push heroku branch_name:master。
  • 很好的答案,但如果你像我一样使用 PowerShell,你会想要rm -Recurse -Force .git
  • 我不会直接去破坏你整个仓库的历史、分支、远程等。在你这样做之前稍等片刻。
【解决方案2】:

我刚刚用我的一个应用解决了这个问题。如果您选中documentation,Cedar Stack 会在 根目录 中搜索 Gemfile。在我的情况下,根目录只有包含我的应用程序的文件夹,其中包含 Gemfile。

所以,你需要做的是在这个文件夹中初始化一个新的 git repo 并添加远程:

$ cd my_app_folder
$ git init
$ git add .
$ git commit -m "Heroku commit"
$ git remote add heroku git@heroku.com:my-app-in-heroku.git
$ git push heroku master

你就完成了!

【讨论】:

    【解决方案3】:

    每当我遇到这个错误时,我都会检查以下两件事:

    • 确保 Gemfile 存在于 Rails 应用程序的 根目录 中。 Heroku 使用它来确定要部署的应用程序类型。
    • 确保 Rails 应用程序根目录本身置于版本控制之下(例如:Git),而不是其父目录。

    如果您不小心将 Rails 应用程序的父目录放入版本控制中。删除此父目录中的.git 目录并初始化一个新存储库,但这次是在 Rails 应用程序目录下。

    【讨论】:

      【解决方案4】:

      试试

      $ git init
      $ git add .
      $ git commit -m "Change to something"
      

      然后运行

      git push heroku master
      

      【讨论】:

      • 试过了,还通过将 repo 克隆到新目录来再次尝试,但仍然没有用。
      • 当您为 github 重新初始化文件时。您的文件是否已添加到 github 并准备好推送?
      【解决方案5】:

      我之前也遇到过这个问题,这是因为我试图将远程分支推送到 heroku。

      解决问题,而不是使用:

      git push heroku master
      

      我用过:

      git push heroku my-branch:master
      

      这会将 git 存储库中的远程分支 my-branch 推送到 heroku 的 master 分支。

      【讨论】:

        【解决方案6】:

        我也有同样的问题。我的文件结构不是 heroku 所期望的(.git 必须与 Gemfile 处于同一级别)。我删除了 Rails_Code 文件夹,它工作正常。

        Project\
                 .git
                 Rails_Code\
                             Gemfile
                             etc...
        

        【讨论】:

          【解决方案7】:

          同样的情况,就像上面说的@petwho

          “确保 Gemfile 存在于 Rails 应用程序的根目录中。Heroku 使用它来确定要部署的应用程序类型。”

          就我而言,不知何故我的Gemfiles 和Gemfile.lock 被忽略了。当我在 github 上检查时,由于.gitignore 忽略了我的 gemfile,我的应用程序没有推送 Gemfile。

          从 gitignore 中删除我的 gemfile 后,我推送到 heroku,一切顺利

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-01-11
            • 1970-01-01
            • 2014-11-09
            • 2012-12-05
            • 2014-01-22
            • 2014-04-22
            • 2015-07-18
            • 2013-11-28
            相关资源
            最近更新 更多