Railsの無料ホスティングherokuがやばい

RailsをWebに公開しようと思ったらVPSなんかを借りないといけません。設定もめんどい。
herokuとは無料で借りれるRailsのためのアプリサーバーみたいなイメージで
細かい設定などしなくてもGitにPUSHするだけで手元のRailsアプリをデプロイできます。
無料で制限がありますが、アプリの個数などに制限もなく、軽いWebサービスならこれだけで行けるでしょう。

[heroku準備]
http://www.heroku.com/
ここでまずアカウントを作成します。
次に、
gem install heroku
でherokuをInstall。
では、アカウントを設定しましょう。
heroku list
を実行します、これは登録しているアプリ一覧を出すためのものですが、
アカウントがないのでアカウントを求められます。ここで打っておけば保存されるわけです。
で、さっきのメアドとパスワードを入れる。
これで向こう側は準備OKです。上げてみましょう。

〜PUSH〜
あげたいプロジェクト(僕は今回ドットインストールのRailsコウザのProjectにしました)をgit管理下にします
git init
ですね。コミットもしちゃいましょう。
そしたら
heroku create
をしましょう。これでheroku上に新しくアプリ用の場所が確保され、かつこの手元のgitのremoteにそれが追加されます。
そしたら
git push
して、向こうのDBのMigrate
herotoku rake db:migrate
でOK!

のはずがエラーなので動かない。直して行きましょう

〜Postgre〜
実はherokuの微妙なのはDBがMySQLでもなくSQLiteでもなくpostgreSQLなところ。
その設定をしないといけません。プログラムの変更なしでいけるのでやってみましょう。
まず、手元にpostgreSQLが必要なので
brew install postgresql
を実行。

Error: Download failed: http://ftp9.us.postgresql.org/pub/mirrors/postgresql/source/v9.1.1/postgresql-9.1.1.tar.bz2

エラーですね。どうもURLが違うらしいので
brew edit postgresql
でurlをhttp://ftp.postgresql.org/pub/source/v9.1.1/postgresql-9.1.1.tar.bz2に変更しちゃいましょう。
で、再度実行してOK。

次に、gemfileの編集です。
プロジェクトのgemfileに gem ‘sqlite3’っぽいのがあると思います、コレを消して

[ruby]
group :production do
gem ‘pg’
end
group :development, :test do
gem ‘sqlite3’ end
[/ruby]

こんな風にしちゃいましょう。コレが出来たら
bundle update
で適用。

〜アセットパイプライン〜
Railの新しいバージョンからアセットパイプラインという素晴らしい機能がついてます
cssやjsなんかをまとめておいて、レスポンスにくっつけるというものです。コレは早い。
ただ、「いつまとめるのか」という問題で、デフォルトでnoになってるらしいので、
このままだとつかえません。(ちなみにdevelopment test環境の時はこれはアセットパイプラインは使えないので何も考えず普通にプログラムは動く)
アセットパイプラインのまとめをしちゃいましょう
bundle exec rake assets:precompile RAILS_ENV=production
これを実行するとまとめが行われてアセットパイプラインがちゃんと動くようになります
(他にも設定からconfig.assets.compile = trueとしておく手があります。こっちのほうが現実的ですね。忘れないし)

さて、これらをやってPUSHして、migrateしてみましょう!
ちゃんと動くはず。
DBの問題とアセットパイプラインの問題がありましたけど、
無料でRailsサーバーをすぐ利用できるのはすごく便利ですね!