HerokuでRuby1.9.3 + Rails3.2環境構築
参考)http://railsapps.github.com/rails-heroku-tutorial.html
■0. はじめに
HerokuはRuntime環境を"stack"という管理概念で保持している。
・Stackの一覧
=> https://devcenter.heroku.com/articles/stack
デフォルトのstackはBamboo。
Ruby1.9系はCedarを使う。
※cedarは2012/04/14現在、public beta。
■1. herokuプロジェクト作成
・プロジェクト作成
# gitが居なければ初期化 # git init $ heroku create {myapp} --stack cedar # stackの確認 $ heroku stack aspen-mri-1.8.6 bamboo-mri-1.9.2 bamboo-ree-1.8.7 * cedar (beta) $ heroku ps Process State Command ------- -------------- ------- web.1 created for 4m
・Rubyバージョンの確認
$ heroku run console Running console attached to terminal... up, run.1 sh: console: not found # cedarではタスクの実行は"heroku run hoge" # rakeの実行は"heroku run rake db:reset"など # まだrailsプロジェクトをデプロイしてないのでconsoleは動かない # ここでconsoleが起動するようだと、後々ちょっと迷う。(後述)
・環境確認
$ heroku info === {myapp} Git URL: git@heroku.com:{myapp}.git Owner: myapp@example.com Stack: cedar Web URL: http://{myapp}.herokuapp.com/ $heroku config # レスポンスなし
■2. ruby1.9.3導入
http://railsapps.github.com/rails-heroku-tutorial.html
$ heroku labs:enable user_env_compile -a {myapp} ----> Enabling user_env_compile for {myapp}... done WARNING: This feature is experimental and may change or be removed without notice. $ heroku config:add RUBY_VERSION=ruby-1.9.3-p125 Adding config vars and restarting app... done, v2 RUBY_VERSION => ruby-1.9.3-p125 $ heroku config:add PATH=bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin Adding config vars and restarting app... done, v3 PATH => bin:vendor/bundl...in:/usr/bin:/bin
$heroku config PATH => bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin RUBY_VERSION => ruby-1.9.3-p125
■3. railsデプロイ
cedarはデフォルトでwebrickが動く。
thisサーバに変更しておく。
# RAILS_ROOT/Gemfile + group :production do + gem 'thin' + end
・デプロイ実行
# git add . # git commit -m "foo" $ git push heroku master
・環境確認
$ heroku ps Process State Command ------- ---------- ------------------------------------ web.1 up for 20s bundle exec thin start -R config.r.. # Thisサーバで実行されている。 $ heroku config DATABASE_URL => foobar GEM_PATH => vendor/bundle/ruby/1.9.1 LANG => en_US.UTF-8 PATH => bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin: /bin RACK_ENV => production RAILS_ENV => production RUBY_VERSION => ruby-1.9.3-p125 SHARED_DATABASE_URL => foobar $heroku run console Loading production environment (Rails 3.2.1) irb> RUBY_VERSION RUBY_VERSION => "1.9.3
ここで「2. ruby1.9.3導入」のステップを踏んでいるにも関わらず1.9.2が返ってくる場合は、恐らく1.9.3を導入してからアプリのデプロイを行っていない。
もう一度git push heroku masterするとrubyが1.9.3になる。
コマンドベースで反映できるのかどうかは分からない。
※heroku restartしてもダメだった。
■4. 困ったら見るサイト
http://d.hatena.ne.jp/language_and_engineering/20110914/p1
http://d.hatena.ne.jp/xyk/20101102
http://railsapps.github.com/rails-heroku-tutorial.html
https://devcenter.heroku.com/articles/rails3
https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar