heroku打开 – 没有指定的应用程序

我刚刚创build了一个简单的Rails应用程序

rails new myapp 

然后使用以下命令创buildheroku堆栈:

 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 

我错过了什么明显的?

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

heroku git:remote -a MyHerokuAppName

Heroku默认情况下不是用你的目录名创build应用程序,所以当你这样做

 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 

它正在创build一个名叫“calm-bayou-3229”的应用程序,你可以这样做

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

你总是可以列出你的应用程序:

 heroku apps 

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

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

你的gitconfiguration文件可能看起来像这样,特别是如果你在你的机器上玩弄几个heroku帐户。

git@heroku.{heroku.account}由于~/.ssh/config文件中的configuration而显示出来而不是git@heroku.com 。 对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 

当我运行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 (这是默认值,当你不使用'账户'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. 

解决这个问题的一个办法是为heroku定义一个remote git和remote,然后告诉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 

我喜欢在将内容推送到远程时明确指定远程,因此,即使此configuration也适用于使用默认(例如, git push )的推/拉, heroku远程即可。 我创build了一个新的远程“heroku-app”,并添加remote = heroku-app ,告诉heroku使用一个不包含在URL中的heroku帐户的远程。

现在我可以运行我的githeroku命令了。

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

这个疯狂的事情为我工作:

如果你的应用程序的git repo拷贝在你的本地机器上,然后cd到那个位置, 就是这样

你将能够使用该应用程序。 你可以通过命令来validation这个: heroku logs -n 1500