woshidan's blog

そんなことよりコードにダイブ。

すでに作ったherokuのアプリケーションに対してデプロイする

チュートリアルなど各所の説明をみていると、heroku createからはじめて、新しくアプリを作ってからデプロイする方法はよく載っているけれど、

そんなことしてたらあっという間に無料枠5つ埋まってしまうので困る。

そうじゃない、こないだ作ったアプリケーションに変更を反映させたいのですよ。

ということで、

【Rails】git push時に、Permission denied (publickey)エラー - せかいや

とか、githubのキーの作り方のページを参考にしながらやってみた。

 

ワークツリーでconfigの中に.sshディレクトリを用意し、その中にconfigというファイルを作る

configファイルの中身は

Host heroku.com

 User git

 port 22

 Hostname heroku.com

 IdentityFile ~/.ssh/heroku_id_rsa(キーの名前)

 TCPKeepAlive yes

 IdentitiesOnly yes

と書いて保存(一緒にgithub用などのキーの設定を書いてもいい)。

 

cd condig/.sshでこのconfigファイルのあるディレクトリに移動して、キーを作成する。

ssh-keygen -C (Herokuに登録したメールアドレス) -t rsa

を入力。Windowsの場合はこのコマンド、という資料が多いが、Macもこれでいい。このオプションをつけないとHeroku用のキーとして認められないので注意する。

途中に名前の入力が求められるが、上のキーの名前と合わせること。

本当は、ここでのキーの名前入力はファイル名というよりファイル名含む相対アドレスのことなので、.sshディレクトリに移動しなくてもできるけれど、入力が面倒なので。。

 

herokuに作成したキーを登録する。

heroku keys add

キー作成のコマンドでオプションを忘れていたりして間違いが含まれていると、このコマンドで新しく認証キーが作成されてしまう。

これで作成されたファイルをconfigファイルに書いてもいいかもしれないけれど。

 

あとは元のディレクトリに戻ってpush

git push heroku(heroku用に登録しているgitのurl) master

を実行。事前に

git remote add heroku git@heroku.com:application-name.git

をして、herokuという名前のpush先のアドレスを登録しておくこと。

このgitアドレスはherokuのアプリケーションの設定画面から見ることが可能。

 

なお、herokuの動作環境はローカルホストと違ってproductionなので、データベースに変更があった場合(モデルが追加されているなど),

heroku openの前に

 

heroku run rake db:migrate

をしておかないと正常に動かないことがある(大体pending:"動かすために必要と思われるコマンド"がエラーメッセージに入っているみたいなので探す)。