herokuにrailsアプリをデプロイする(Error H10 ってなに;;)
railsによるアジャイルWebアプリケーション開発第4版を読んだので早速herokuでアプリでも・・・
と思ったらRubyもrailsも初心者で結構つまづいたのでメモ。
herokuへのサインアップ等は終わってるものとします。
Hello Worldまでは以下が参考になりました。
http://d.hatena.ne.jp/ruedap/20110128/ruby_heroku_sinatra_hello_world
まずはRailsアプリを普通に用意する
memberlist というアプリで、userテーブルを作って、scaffoldでCRUDできるところまで作ります。
アプリ作成
$ mkdir ~/projects/ruby $ cd ~/projects/ruby $ rails new memberlist
scaffold でユーザーテーブルともろもろコード生成
$ cd memberlist $ rails g scaffold user code:string name:string $ rake db:migrate
rootを設定しておく
config/routes.rb
root :to => 'users#index'
$ rm public/index.html
(既にgit initされてる場合は git rm public/index.html)
ローカルで確認
http://localhost:3000/ にアクセスして「Listing users」とか出てればOK。
heroku にデプロイ
git にする
$ git init $ git ci -am "initial commit"
とりあえずデプロイしてみる
heroku create 時にアプリ名を指定することも出来ます。
$ heroku create $ git push heroku master $ heroku rake db:migrate $ heroku open
Application Error となる
ブラウザでherokuのアプリが表示されるがApplication Errorとなっている。
$ heroku logs 2012-06-15T12:08:37+00:00 heroku[router]: Error H10 (App crashed) -> GET morning-sword-1974.heroku.com/ dyno= queue= wait= service= status=503 bytes=
Error H10 謎のエラー。
対処
本番はassetsとかのプリコンパイルが必要
heroku rake assets:precompire とかの方法もあるらしいが、とりあえずライブコンパイルを有効に。
config/environments/production.rb
config.assets.compile = true
false -> true に変更。
herokuにJS実行環境が無い
gem入れる。
Gemfile
gem 'therubyracer'
herokuはsqlite3じゃなくてPostgreSQL
config/database.yml は書き換えなくても勝手にPostgreSQL使うらいい。
gemを追加しておく。
Gemfile
gem 'pg'