みなさんがmacを買う理由の1つにherokuを使ってRailsの開発がしたいというのがあると思います。そこで、今回はmacを買ってきてherokuにdeployするまでの手順を書いてみました。念のため、手元のマシンでLionをクリーンインストールしてからの手順を記述しています。
買う
もしmacを持っていなければ、今すぐ近くのmacが売っていそうなお店(そこらをぶらついているときにmacを売っているのを見たことありますよね!そこに行くんです!)で買ってきて下さい。ネットで買うといますぐこの記事に書いてあることを試すことができません。しかし、もうすぐ新しいmacとか出そうだから落ち着いた方がいい感もあるので、その辺は自己責任で判断しましょう。
ソフトウェアアップデート
これしないと不安。しましょう。(アップデート後に再起動を促されることも多いと思います。)
iTerm2
iterm2を入れます。
Downloadにあるcurrent versionを入れましょう。
command line tools for xcode
xcode入れても良いです。Apple Developerからダウンロードします。
インストール方法は、「XcodeからCommand Line Tools for Xcodeに切り替えたらHDD使用容量が7GB減った」という記事が大変わかり易かったです。
homebrew
homebrew入れます。ロゴの下にあるこれカッコいいな。
Homebrew The missing package manager for OS X
さて、以下のようインストールします。インストール中にPasswordの入力を求められたらログイン時のパスワードを入力して下さい。
/usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"
zsh
好みによるっちゃよるんですが、入れておくと便利でしょう。
brew install zsh
curl https://raw.github.com/gist/1970184/d7adf527117edd583de7b55141f8d7377a3b6cf6/.zshrc > ~/.zshrc
中身はこんな感じ
cat ~/.zshrc
export LANG=ja_JP.UTF-8 # homebrewを優先 export PATH=~/bin:/usr/local/bin:$PATH
source ~/.zshrc
シェルをかえる。以下のコマンドでパスワードの入力を求められたら、ログインパスワードを入力してください。
sudo sh -c "echo /usr/local/bin/zsh >> /etc/shells" chsh -s /usr/local/bin/zsh
git
バージョン管理用にgitを入れます。
brew install git
git config --global user.name "your name" git config --global user.email "youraddress@example.com"
automake
automakeを入れます
brew install automake
rvm
複数のRubyを管理するためにrvmを入れます。
bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
PATHを通す。
vim ~/.zshrc
以下を足します。
# rvm -s "$HOME/.rvm/scripts/rvm" && . "$HOME/.rvm/scripts/rvm"
面倒であれば
curl https://raw.github.com/gist/1970184/0c2cf14cbc696ceffcfc7b3c5cdeec84158e614e/.zshrc > .zshrc
source ~/.zshrc
ruby1.9.3
利用できるバージョンを確認しましょう。
rvm list known|grep 1.9.3
[ruby-]1.9.3-preview1 [ruby-]1.9.3-rc1 [ruby-]1.9.3-p0 [ruby-]1.9.3[-p125] [ruby-]1.9.3-head
herokuではまだ1.9.3-p0しか使えないので1.9.3-p0を入れておきます。2012年3月4日現在では、1.9.3-p125とか指定すると、以下のように怒られちゃいます。2012年4月2日現在では、1.9.3-p125が利用出来ます。
rvm install 1.9.3-p125 --with-gcc=clang
rvm use 1.9.3-p125 --default
herokuアカウントを作成
メールを受け取る必要があるのでメールクライアントの設定は別途しておきましょう。herokuから"Sign Up"ボタンをクリックして進みます。
メールアドレスを入力します。このメールアドレスはherokuログイン時に使います。
メールクライアントを確認して、メールに書いてあるURLにアクセスし、herokuアカウントの作成を完了させましょう。アクセス後にアプリ作成などの画面が出ますがシカトしてすぐに閉じて良いです。
公開鍵を作成
ssh-keygen -b 2048
rvm gemset作成
rvm --create 1.9.3-p125@heroku-sample
gem install heroku --no-ri --no-rdoc
heroku login
heroku login
アカウント作成時に指定したメールアドレスとパスワードを入力します。
rails3.2.2をインストールしてherokuへデプロイする
railsをインストールします。
gem install rails --version 3.2.2 --no-ri --no-rdoc
アプリを作成します。mysqlでやるぜ、という方やrspecでtest書くし!という方は-d mysqlや-Tを指定しておくと良いでしょう。
rails new heroku-sample
cd heroku-sample
gitを初期化します。gitの使い方は別途、Git入門などをご覧になると良いでしょう。
git init
git add -A
git commit -m'init'
必要最低限のgemを記述します。
curl https://raw.github.com/gist/1970532/376b6a26ed936ac43cad0b17a64512f5c0216a50/Gemifile > Gemfile rm -f Gemfile.lock bundle install --without production git add -A git commit -m 'Update Gemfile'
中身はこんな感じ。herokuでは、PostgreSQL使うので、pgを指定したり、developmentでしか使わないものはそこに移動とかです。
source 'https://rubygems.org' gem 'rails', '3.2.2' gem 'jquery-rails' group :assets do gem 'sass-rails', '~> 3.2.3' gem 'coffee-rails', '~> 3.2.1' gem 'uglifier', '>= 1.0.3' end group :test, :development do gem 'sqlite3' gem 'heroku' end group :production do gem 'pg' gem 'thin' end
herokuにアプリを作成します。
heroku create --stack cedar
Ruby1.9.3を使うにはheroku-labsの機能を使います。
heroku plugins:install http://github.com/heroku/heroku-labs.githeroku labs:enable user_env_compile heroku config:add RUBY_VERSION=ruby-1.9.3-p125
herokuにdeployします。
git push heroku master
初の接続時には以下のような文言が出るのでyesで進みます。
Are you sure you want to continue connecting (yes/no)?
デプロイ時に以下の文字列が出てれば、ruby1.9.3で動いてます。
Using RUBY_VERSION: ruby-1.9.3-p125
デプロイ後、作成したアプリを見てみましょう。
heroku open
ちょっとこのままだとつまらないのでscaffoldでアプリを作ってみましょう。
デフォルトのindex.htmlを消します。
rm -f public/index.html git add -A git commit -m'Delete default index.html'
scaffoldでブックマークアプリでも作ってみましょうか。
rails g scaffold bookmark name:string url:string rake db:migrate sed -i -e "s/ # root :to => 'welcome#index'/ root :to => 'bookmarks#index'/" config/routes.rb git commit -m 'rails g scaffold bookmark'
今回のdeployではmigrationが必要なので、一旦メンテナンスモードにしてみましょう。
heroku maintenance:on
こうしておくとmigration前なのでエラーが表示されてしまうといったことがなくなります。
git push heroku master
heroku側のmigrationも実行します。
heroku run rake db:migrate
メンテナンスモードを解除します。
heroku maintenance:off
heroku open
以上で、herokuでruby1.9.3 + rails3.2することが出来ました。 あっという間ですね。本当に便利な世の中です。
herokuでrails3.1以降を動作させるときの注意点
stackはcedarで
前述の手順にある通りheroku createの際に --stack cedarを指定します。
assets:precompile周りのエラー対策
Ruby on Rails Guides: Asset Pipelineにあるとおり、herokuにdeployした際に、使っているgemによってはassets precomileの辺りでエラーが出ることがあります。その時の対処をしておきます。
config/application.rb
に以下を記述します。
config.assets.initialize_on_precompile = false
以下のコマンドで記述できるのでどうぞ。
echo config/application.rb |xargs perl -p -i -e 's/ end/ #for heroku\n config.assets.initialize_on_precompile = false\n end/'
git add -A git commit -Add config.assets.initialize_on_precompile to false'
git push heroku master
therubyracerは必要?
どうやら現在は不要なようです。これで結構ハマリました。昔は必要だったよなーみたいなところで。
おまけ
今回作ったアプリはこちら
http://quiet-dawn-3034.herokuapp.com/
これからどうすればいいの?
やっぱり次はデザインをどうにかしたいよね、というわけで以前書いた「twitter bootstrap railsを使ったら職が見つかり彼女も出来て背も3センチ伸びました。」というフザけたタイトルの記事をご覧頂ければと思います。