単純な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
明らかな何かが欠けていますか?
Herokuに既存のアプリがあり、アプリが指定されていないというメッセージが表示される場合は、ローカル端末でこれを実行して修正できます。
heroku git:remote -a MyHerokuAppName
デフォルトでは、Herokuはディレクトリ名でアプリを作成していません。
heroku create --stack cedar
Creating calm-bayou-3229... done, stack is cedar
http://calm-bayou-3229.herokuapp.com/ | [email protected]:calm-bayou-3229.git
「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
を開きます。
Git configファイルは、特にマシン上でherokuアカウントをいくつかジャグリングしている場合、次のようになります。
git@heroku.{heroku.account}
ファイルの設定により、[email protected]
の代わりに~/.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 = [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 .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.
これを解決する1つの方法は、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 = [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
コンテンツをリモートにプッシュするときにリモートを明示的に指定したいので、heroku
リモートはそのためのものです。ただし、この構成はデフォルトを使用したプッシュ/プルにも対応しています(例:git Push
) 。新しいリモート「heroku-app」を作成し、remote = heroku-app
を追加して、URIにherokuアカウントを含まないリモートを使用するようheroku
に指示します。
これで、必要に応じてgit
およびheroku
コマンドを実行できます。
私は同じ問題を抱えていました。私がしなければならなかったのは、プロジェクトディレクトリのモデルフォルダからコマンドを実行する代わりに、プロジェクトディレクトリにcdすることだけでした。
このクレイジーなことは私のために働いた:
ローカルマシンにアプリのgitリポジトリコピーがある場合は、cd
をその場所に配置し、それだけです !!
アプリを使用できるようになります。次のようなコマンドでこれを確認できます:heroku logs -n 1500