herokuにデフロイした時のメモ

2013年7月14日 タイムゾーンに関する記述を追加しました。

概要

無職中で暇なので、Herokuを使ってみました。Herokuはアカウントだけ作って触ったことなかったので、ドキドキでつまずきまくったけど、実質1時間くらいでデフロイできました。たぶん、普通にrails開発をしていて以下のことをすればHerokuへのデフロイは完了すると思います。

参考URL

他の参照したページもあるのですが、内容が重複していたり、情報として古くなったものもあったので、主観で覚えときたいリンクだけを残しました。

Herokuにデフロイする時に特別にした作業

heroku-toolbeltをインストールしてHerokuにログイン

昔は heroku っていうgemを使ってたような話を聞いたことがあるけど、今はコマンドラインツールをHerokuが提供してくれているらしい。

   brew install heroku-toolbelt

でインストール完了。

次に

    heroku login

ってコマンドを打つと、

  Enter your Heroku credentials.
    Email: hogehoge@email.com                 # Herokuでログインしているメールアドレス
    Password (typing will be hidden):         # Herokuのパスワード
    Found the following SSH public keys:
    # ~/.ssh/にあるファイルを自動的に探してくれる。複数ある時はどっちを使うか聞かれる。
    Which would you like to use with your Heroku account? 2
    Uploading SSH public key /Users/hoge/.ssh/id_rsa_hogehoge.pub... done
    Authentication successful.

こんな感じで

  1. ログイン
  2. sshの登録

をしてくれる。

環境変数の扱い

Herokuコマンドで環境変数を設定することをよく書かれているけど、僕はfigaroっていうgemを使っていたので、

   rake figaro:heroku

ってすると開発環境で使用している環境変数をHerokuに設定してくれます。

sqlite3をdevelopment、test グループに移動して pg をproductionにした

これは有名なことなので詳細は割愛。

rubyのバージョンを指定した

本日(2013年7月1日)現在、Heroku上のデフォルトのrubyバージョンは2.0です。

ruby1.9.3を開発時使用していたら、Gemfileに

   ruby "1.9.3"

と書きましょう。

rails_12factor gem を入れた

HerokuのGetting Started with Rails 4.x on Heroku と公式に書いてあるのでそのまんま入れといた。

上記リンクには「静的なasset機能とlogの機能をうまく処理してくれる」っぽいことが書かれていた。

config.assets.initialize_on_precompile = false を追加した

知っておきたい!Herokuを使う上では当たり前?の16の常識 にとにかく「書いとけ」とのこと。

タイムゾーンを設定した

アプリケーション内のタイムゾーンを設定します。 しかし、これをしても heroku logs で見れる時刻は設定したタイムゾーンを示してくれません。

    heroku config:add TZ=Asia/Tokyo

他の記事で書かれていなくて、心配だったこと

開発時はsqlite3を使っていたので、database.ymlは全く変更していませんでした。当然production環境の設定もsqlite3です。 dbの接続情報もHeroku上では公開されてなさそうだしどうしたものか。。。

しかし、この心配は杞憂に終わりました。

普通にHerokuにpushすると

    -----> Writing config/database.yml to read from DATABASE_URL

とログに出ていました。Herokuが勝手にやってくれるらしい。

あやふやなこと

Herokuを使う時、アセットパイプライン関係でハマるというイメージをなんとなく持っていたんだけど、とくにはまらなかった。

対策っぽいことをしていたことはしたけど、「アセットをプレコンパイルしたよー」って以下のログが出たのは

  -----> Preparing app for Rails asset pipeline
           Running: rake assets:precompile
           Asset precompilation completed (49.11s)

sass-railsをassetグループから外した後にデフロイした後だった。

rails_12factorを入れたり、 config.assets.initialize_on_precompilefalse にしたりってのは不要なのかな。。。

HerokuではじめるRailsプログラミング入門

HerokuではじめるRailsプログラミング入門