みなさんがmacを買う理由の1つにherokuを使ってRailsの開発がしたいというのがあると思います。そこで、今回はmacを買ってきてherokuにdeployするまでの手順を書いてみました。念のため、手元のマシンでLionをクリーンインストールしてからの手順を記述しています。
Downloadにあるcurrent versionを入れましょう。
2012年3月4日現在では、1.9.3-p125とか指定すると、以下のように怒られちゃいます。2012年4月2日現在では、1.9.3-p125が利用出来ます。
メールアドレスを入力します。このメールアドレスはherokuログイン時に使います。
メールクライアントを確認して、メールに書いてあるURLにアクセスし、herokuアカウントの作成を完了させましょう。アクセス後にアプリ作成などの画面が出ますがシカトしてすぐに閉じて良いです。
買う
もしmacを持っていなければ、今すぐ近くのmacが売っていそうなお店(そこらをぶらついているときにmacを売っているのを見たことありますよね!そこに行くんです!)で買ってきて下さい。ネットで買うといますぐこの記事に書いてあることを試すことができません。しかし、もうすぐ新しいmacとか出そうだから落ち着いた方がいい感もあるので、その辺は自己責任で判断しましょう。ソフトウェアアップデート
これしないと不安。しましょう。(アップデート後に再起動を促されることも多いと思います。)![f:id:naoto5959:20120304134035p:plain f:id:naoto5959:20120304134035p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/n/naoto5959/20120304/20120304134035.png)
iTerm2
iterm2を入れます。![f:id:naoto5959:20120304134043p:plain f:id:naoto5959:20120304134043p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/n/naoto5959/20120304/20120304134043.png)
![f:id:naoto5959:20120304134051p:plain f:id:naoto5959:20120304134051p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/n/naoto5959/20120304/20120304134051.png)
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-headherokuではまだ1.9.3-p0しか使えないので1.9.3-p0を入れておきます。
![f:id:naoto5959:20120304134106p:plain f:id:naoto5959:20120304134106p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/n/naoto5959/20120304/20120304134106.png)
rvm install 1.9.3-p125 --with-gcc=clang
rvm use 1.9.3-p125 --default
herokuアカウントを作成
メールを受け取る必要があるのでメールクライアントの設定は別途しておきましょう。herokuから"Sign Up"ボタンをクリックして進みます。![f:id:naoto5959:20120304134055p:plain f:id:naoto5959:20120304134055p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/n/naoto5959/20120304/20120304134055.png)
![f:id:naoto5959:20120304134058p:plain f:id:naoto5959:20120304134058p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/n/naoto5959/20120304/20120304134058.png)
![f:id:naoto5959:20120304134102p:plain f:id:naoto5959:20120304134102p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/n/naoto5959/20120304/20120304134102.png)
公開鍵を作成
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-samplegitを初期化します。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' endherokuにアプリを作成します。
heroku create --stack cedarRuby1.9.3を使うにはheroku-labsの機能を使います。
herokuにdeployします。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
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 masterheroku側の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