58

我刚刚创建了一个简单的 Rails 应用程序,使用

rails new myapp

然后使用以下方法创建了heroku堆栈:

heroku create --stack cedar 

但是当我尝试使用以下命令在 Heroku 上打开应用程序时:

heroku open

我得到:

 !    No app specified.
 !    Run this command from an app folder or specify which app to use with --app <app name>

还有这个:

$ heroku open --app myapp

给了我这个:

 !    App not found

我错过了一些明显的东西吗?

4

5 回答 5

130

如果您在 Heroku 上有一个现有的应用程序并且您收到此没有指定应用程序的消息,您可以通过在本地终端上运行它来更正它:

heroku git:remote -a MyHerokuAppName

于 2014-07-18T02:18:55.737 回答
26

Heroku 默认情况下不会使用您的目录名称创建应用程序,所以当您这样做时

heroku create --stack cedar
Creating calm-bayou-3229... done, stack is cedar
http://calm-bayou-3229.herokuapp.com/ | git@heroku.com:calm-bayou-3229.git

它正在创建名为“calm-bayou-3229”的应用程序,你可以这样做

heroku open --app calm-bayou-3229
Opening http://calm-bayou-3229.herokuapp.com/

您可以随时列出您的应用程序:

heroku apps
于 2012-09-18T15:31:57.520 回答
20

解决该问题的另一种方法是广泛了解与 heroku 应用程序关联的 .git/config 文件正在做什么,并进行必要的调整。

1..git/config从你的heroku项目的根目录打开。

你的 git 配置文件可能看起来像这样,尤其是当你在你的机器上处理几个 heroku 帐户时。

git@heroku.{heroku.account}显示而不是git@heroku.com因为~/.ssh/config文件中的配置。heroku-app-8396.git应该更新对的引用以匹配您的 heroku 项目名称。您拥有的每个 heroku 帐户都应该在~/.ssh/config文件中有一个条目。显然,与这个 heroku 项目关联的 heroku 帐户应该显示在您的.git/config文件中。

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@heroku.heroku.account:heroku-app-8396.git
[remote "heroku"]
    fetch = +refs/heads/*:refs/remotes/heroku/*
    url = git@heroku.heroku.account:heroku-app-8396.git
[branch "master"]
    remote = origin
    merge = refs/heads/master
[heroku]
  account = heroku.account

2.当我跑步git pull heroku master时,一切似乎都运行良好。

3.当我运行heroku logs时,我收到一条错误消息:

$ heroku ps
!    No app specified.
!    Run this command from an app folder or specify which app to use with --app APP.

为什么?

据我所知,该heroku命令似乎不知道如何处理这些{heroku.account}引用。如果我们将这些引用更改为com(这是您不使用“accounts”heroku 插件时的默认值),heroku命令会再次起作用,但现在我们的git调用表明存在不同的问题:

$ git pull heroku master

 !  Your key with fingerprint d6:1b:4c:48:8c:52:d4:d6:f8:32:aa:1a:e7:0e:a2:a1 is not authorized to access smooth-robot-8396.

fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

解决这个问题的一种方法是定义一个遥控器git和一个遥控器heroku,然后告诉heroku使用哪个遥控器。

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@heroku.heroku.account:heroku-app-8396.git
[remote "heroku"]
    fetch = +refs/heads/*:refs/remotes/heroku/*
    url = git@heroku.heroku.account:heroku-app-8396.git
[remote "heroku-app"]
    fetch = +refs/heads/*:refs/remotes/heroku/*
    url = git@heroku.com:heroku-app-8396.git
[branch "master"]
    remote = origin
    merge = refs/heads/master
[heroku]
    remote = heroku-app
    account = heroku.account

当我将内容推送到遥控器时,我喜欢明确指定遥控器,因此heroku遥控器就是为此而设计的,即使此配置也支持使用默认值(例如,git push)进行推送/拉取。我创建了一个新的远程“heroku-app”并添加remote = heroku-app以告诉heroku使用不包括 URI 中的 heroku 帐户的远程。

现在我可以随心所欲地运行我的githeroku命令了。

于 2013-02-15T17:34:47.350 回答
6

我有同样的问题,我所要做的就是 cd 到项目目录,而不是从项目目录中的模型文件夹运行命令。

于 2014-12-15T02:17:08.607 回答
2

这个疯狂的事情对我有用:

如果您在本地机器上有应用程序的 git repo 副本,然后cd到该位置,就是这样

您将能够使用该应用程序。您可以通过以下命令验证这一点:heroku logs -n 1500

于 2017-09-30T14:26:25.037 回答