Je viens de créer une simple application Rails en utilisant
Rails new myapp
puis créé la pile heroku en utilisant:
heroku create --stack cedar
Mais lorsque j'essaie d'ouvrir l'application sur Heroku en utilisant:
heroku open
Je reçois:
! No app specified.
! Run this command from an app folder or specify which app to use with --app <app name>
Et ça:
$ heroku open --app myapp
me donne ceci:
! App not found
Suis-je en train de manquer quelque chose d'évident?
Si vous avez une application existante sur Heroku et que vous obtenez ce message sans application spécifiée, vous pouvez la corriger en l'exécutant sur votre terminal local:
heroku git:remote -a MyHerokuAppName
Heroku par défaut ne crée pas d'application avec le nom de votre répertoire, donc quand vous le faites
heroku create --stack cedar
Creating calm-bayou-3229... done, stack is cedar
http://calm-bayou-3229.herokuapp.com/ | [email protected]:calm-bayou-3229.git
il crée une application nommée 'calm-bayou-3229' Et vous pouvez le faire
heroku open --app calm-bayou-3229
Opening http://calm-bayou-3229.herokuapp.com/
Vous pouvez toujours répertorier vos applications avec:
heroku apps
Une autre approche pour résoudre le problème consiste à comprendre ce que fait le fichier .git/config associé à l'application heroku et à effectuer les ajustements nécessaires.
1.Ouvrez .git/config
à partir de la racine de votre projet Heroku.
Votre fichier de configuration git peut ressembler à ceci, surtout si vous jonglez avec quelques comptes heroku sur votre machine.
git@heroku.{heroku.account}
s'affiche au lieu de [email protected]
en raison de la configuration de votre ~/.ssh/config
fichier. La référence à heroku-app-8396.git
doit être mis à jour pour correspondre au nom de votre projet Heroku. Chaque compte Heroku que vous avez doit avoir une entrée dans le ~/.ssh/config
fichier. De toute évidence, le compte Heroku auquel ce projet Heroku est associé devrait apparaître dans votre .git/config
fichier.
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
[remote "Origin"]
fetch = +refs/heads/*:refs/remotes/Origin/*
url = [email protected]:heroku-app-8396.git
[remote "heroku"]
fetch = +refs/heads/*:refs/remotes/heroku/*
url = [email protected]:heroku-app-8396.git
[branch "master"]
remote = Origin
merge = refs/heads/master
[heroku]
account = heroku.account
2.Lorsque je lance git pull heroku master
, tout semble bien fonctionner.
3.Lorsque je lance heroku logs
, J'obtiens un message d'erreur:
$ heroku ps
! No app specified.
! Run this command from an app folder or specify which app to use with --app APP.
Pourquoi?
Autant que je sache, la commande heroku
ne semble pas savoir quoi faire avec la {heroku.account}
les références. Si nous changeons ces références en com
(qui est la valeur par défaut lorsque vous n'utilisez pas le plugin heroku 'accounts'), les commandes heroku
fonctionnent à nouveau, mais maintenant nos git
les appels disent qu'il y a un problème différent:
$ 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.
Une façon de résoudre ce problème consiste à définir une télécommande pour git
et une télécommande pour heroku
, puis d'indiquer à heroku
la télécommande à utiliser.
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
[remote "Origin"]
fetch = +refs/heads/*:refs/remotes/Origin/*
url = [email protected]:heroku-app-8396.git
[remote "heroku"]
fetch = +refs/heads/*:refs/remotes/heroku/*
url = [email protected]:heroku-app-8396.git
[remote "heroku-app"]
fetch = +refs/heads/*:refs/remotes/heroku/*
url = [email protected]:heroku-app-8396.git
[branch "master"]
remote = Origin
merge = refs/heads/master
[heroku]
remote = heroku-app
account = heroku.account
J'aime spécifier explicitement la télécommande lorsque je pousse du contenu vers une télécommande, donc la télécommande heroku
est pour cela, même si cette configuration permet également de pousser/tirer en utilisant la valeur par défaut (par exemple, git Push
). Je crée une nouvelle "application heroku" à distance et j'ajoute remote = heroku-app
pour dire à heroku
d'utiliser une télécommande qui n'inclut pas le compte heroku dans l'URI.
Maintenant, je peux exécuter mes commandes git
et heroku
comme je le souhaite.
J'ai eu le même problème, tout ce que j'avais à faire était de cd dans le répertoire du projet au lieu d'exécuter les commandes du dossier du modèle dans le répertoire du projet.
Cette chose folle a fonctionné pour moi:
Si vous avez la copie git repo de l'application sur votre machine locale, alors cd
à cet emplacement et c'est tout !!
Vous pourrez utiliser l'application. Vous pouvez le vérifier par des commandes comme: heroku logs -n 1500