ruby on rails-heroku open-未指定应用

我刚刚使用创建了一个简单的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

我是否缺少明显的东西?

Snowcrash asked 2019-11-16T23:57:37Z
5个解决方案
126 votes

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

heroku git:remote -a MyHerokuAppName

Aaron Gray answered 2019-11-16T23:58:08Z
25 votes

默认情况下,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
Marcin Olichwirowicz answered 2019-11-16T23:58:44Z
19 votes

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

1.从您的heroku项目的根目录打开git

您的git配置文件可能看起来像这样,尤其是当您在计算机上玩弄了几个heroku帐户时。

由于您的remote = heroku-app文件中的配置,因此显示2617430914384784790528而不是heroku。 对heroku的引用应进行更新以匹配您的heroku项目名称。 您拥有的每个heroku帐户都应该在git文件中有一个条目。 显然,与此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时,一切似乎运行良好。

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

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

为什么?

据我所知,git命令似乎不知道如何处理heroku引用。 如果我们将这些引用更改为remote = heroku-app(当您不使用“帐户” 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定义一个遥控器,然后告诉remote = heroku-app使用哪个遥控器。

[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

我想在将内容推送到遥控器时明确指定遥控器,所以git遥控器就是为此而设计的,即使此配置也可以使用默认值(例如heroku)来推送/拉动。 我创建了一个新的远程“ heroku-app”,并添加remote = heroku-app告诉heroku使用在URI中不包含heroku帐户的远程。

现在,我可以根据需要运行githeroku命令。

David Vezzani answered 2019-11-17T00:00:11Z
6 votes

我遇到了同样的问题,我所要做的就是将CD插入项目目录,而不是从项目目录中的model文件夹运行命令。

Richardlonesteen answered 2019-11-17T00:00:37Z
2 votes

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

如果您在本地计算机上拥有该应用程序的git repo副本,则将heroku logs -n 1500移至该位置即可!

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

student answered 2019-11-17T00:01:15Z
translate from https://stackoverflow.com:/questions/12479668/heroku-open-no-app-specified