バージョン管理に注意しながら、Ruby on Railsの動作環境を構築する
資料によっていろいろ言っていることが違うので、自分なりに調べながらまとめる。こういうのchef?とかで書いとけば環境構築楽になるんだろうな。
必要なもの
-
Ruby ……当然のごとく
-
Rails ……当然のごとく
-
rbenv ……RubyとRailsの管理システム
-
ruby-build ……rbenvとセットで使うっぽいがよくわかってない
-
Git ……バージョン管理。必須ではない気もするがあった方がいい。rbenvとかのインストールにも使う。
-
RubyGems ……Rubyのパッケージ管理システム
-
Bundler ……Gemパッケージの管理システム
こんなところだろうか。直接的に必要なものの他に、それぞれを管理するためのツールが必要だったりしてなかなかに複雑であった。あとhomebrewとかのあたりまで遡るとキリが無くなりそうなのでさすがに割愛。というかOSによっても違ってきちゃうし。readlineとかopensslとかも依存関係があるっぽいんだけどよくわからないので割愛……。んー、意味あるのかこの記事。俺がRoRで使ってる環境はちなみにCent OSなので、その前提で書きます。
rbenv
本とか読んでるとRubyのバージョン管理にはRVM使わせているものが多いんだけど、rbenvの方が軽くてBundlerとの相性も良いらしい。よってrbenvを使うことにする。
参考:(http://passingloop.tumblr.com/post/10512902196/difference-between-rbenv-and-rvm)
インストール先のパスが迷う。。。ホームフォルダに不可視で入れるのが気持ちとしてスッキリするのでそれを採用。
$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
で、bash_profileにパスを追加。
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(rbenv init -)"' >> ~/.bash_profile source ~/.bash_profile
追記
実はこの記事書く前にすでにRVM入れちゃってたんだけど(今読んでる『RailsによるアジャイルWebアプリケーション開発』にはRVMが紹介されてたので)、RVM削除してrbenvを入れなおそうと思い立って調べてみた。そこで辿り着いたRVMのアンインストールコマンドがなかなかに衝撃的だったので追記。
$ rvm seppuku
切腹!!!wwww
ruby-build
よくわかってないけど入れる。わかっていることとしては、これがないとrbenv installコマンドが使えない。rbenvのプラグインとしての位置づけらしいので、.rbenvフォルダ配下に入れる。公式のREADMEにもそう書かれてます故。
$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
Ruby
Rubyはrbenvを使ってインストール。バージョンについては都度変わるので、$ rbenv install -lコマンドで落とせるバージョンを確認しつつ、必要なものを入れる感じで。まぁ使うバージョン選択できるんだから、そんなにセンシティブになる必要はないと思うが。
$ rbenv install 1.9.3
デフォで使うRubyのバージョンを設定。
$ rbenv global 1.9.3 # これで設定 $ rbenv rehash # Rubyの新しいバージョンやコマンド付きのGemを落としたときに実行する
インストール済みのRubyのバージョンは$ rbenv versionsで確かめられる。ちょうど今年の上半期にRuby 2.0が出たばかりだし、このあたりはしばらくの間重宝しそう。
RubyGems
入れる方法はいろいろあるみたいだけど、自分の使ってるCent OSを基本として考えて、yumで入れることにする。
$ yum install rubygems
めんどかったら-yオプション付ければ対話なしで全部インストールされておしまい。
Rails
いよいよRailsのインストール。RailsはGemパッケージとして配布されているので、今入れたRubyGemsを使ってインストールする。特定のバージョンを使う場合は-vオプションを使う。オプション無しだと最新版が入る。rbenvでRubyの複数バージョン切り替えるみたいにRailsもやってみたいんだけど、やり方がわからない。。。
$ gem install rails
Bundler
一番よくわかっていないところ。Rubyで使われるGemパッケージの管理ツールらしい。ルートディレクトリにあるGemfileに書いておいたパッケージについて、依存関係をチェックして自動でインストールしてくれるものらしい。ほお。
$ bundle install
Railsアプリケーションを$ rails newコマンドで作成した場合、ルートディレクトリに勝手にGemfileが作られる上、$ bundle installも自動で実行されるので、あまり意識はしなくていいっぽい。Rails自体もGemで配布されているのでbundlerを使って管理させたりとかもできるみたいなんだけど、そのあたりを調べた感じ、自分には何が何を管理してるのかメタにメタ重ねる感じで徐々に訳わからん感じになってきたので考えるのを、やめた。
RailsアプリケーションのGemfileにはcoffescriptやSASS、SQLiteなどをインストールするように記述されている。下手にこれいじると多分死ぬと思うんだけど、SQLiteじゃなくてMySQL使いたいとか、他のGemパッケージが何か必要になったとか、そういうときは編集してあげてから$ bundle installでおkっぽい。便利!
Git
長くなりそうなので割愛。また別の機会にまとめたい。GitHubのアカウントも持ってる(ほぼ使ってないけど。。。)し、一度RSA認証で繋げるように設定はしたことあるんだけど、完全に忘れたんでもう一度ちゃんとまとめる。今度。
ツールをインストールするときは依存関係の処理とかの問題があるので、後々新バージョンが出たときに惑わないよう、なるたけ自動で管理できるような入れ方をする必要がある。その視点に立って一旦まとめてはみたけど、もっと良いやり方というのも多分あるのだろう。インストールするぐらいなら猿でも出来ると思いがちだが、これがなかなか奥が深い。