MacOSXローカルとLinuxサーバにRubyの環境を構築する際に、おすすめなのがrbenvによるRubyのバージョン管理なのだけど、実はやり方が微妙に異なる。
ローカルとサーバとで同じバージョンを用意したいので、今回はそれを目指します。
前提
MacOSX
パッケージ管理はHomebrewを採用していること。
$ brew -v
Homebrew 0.9.5
Gitがインストール済みであること。(MacOSXは標準だけど、ここではHomebrewで入れたものを採用)
$ git --version
git version 2.3.3
Linux
こちらもGitはインストール済みの想定。ちょっとバージョン古めだけど。
$ git --version
git version 1.7.1
rbenvとruby-buildのインストール
MacOSX
Homebrewでささっとインストールできます。ついでに.bashrcにも追記します。.bash_profileでも良いです。
$ brew update
$ brew install rbenv
$ brew install ruby-build
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
$ rbenv --version
rbenv 0.4.0
Linux
Gitでrbenvとruby-buildをcloneする。clone先はユーザのホームディレクトリが一般的みたい。.bashrc(.bash_profileでもよい)に、パスを追加するためのexportを記述。
$ git clone http://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone http://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
$ rbenv --version
rbenv 0.4.0-146-g7ad01b2
その他必要そうなもの
とりあえずreadlineとopensslは必須っぽい。その他、途中でエラーが出たら追加していく。Ruby2.2.1を入れる時、libffi-develがLinux上で必要になってくる、かも。
MacOSX
$ brew install readline openssl
Linux
$ yum install openssl-devel readline-devel
Ruby
rbenvコマンドで、インストール可能なRubyのバージョンを確認する。
$ rbenv install --list
Available versions:
1.8.6-p383
1.8.6-p420
1.8.7-p249
1.8.7-p302
*
*
*
2.2.0-rc1
2.2.0
2.2.1
2.3.0-dev
*
*
*
ree-1.8.7-2011.12
ree-1.8.7-2012.01
ree-1.8.7-2012.02
topaz-dev
今回は、2.2.1をインストールする
$ rbenv install 2.2.1
Downloading ruby-2.2.1.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/5a4de38068eca8919cb087d338c0c2e3d72c9382c804fb27ab746e6c7819ab28
Installing ruby-2.2.1...
Installed ruby-2.2.1 to /home/xxxxxxx/.rbenv/versions/2.2.1
Rubyのバージョンを確認し、切り替える
$ rbenv versions
* system
2.2.1 (set by /Users/xxxxxxx/.rbenv/version)
$ rbenv global 2.2.1
$ rbenv versions
system
* 2.2.1 (set by /Users/Takahiro/.rbenv/version)
$ ruby -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
rbenvとruby-buildの更新
MacOSX
$ brew update
$ brew upgrade rbenv ruby-build
Linux
$ cd ~/.rbenv
$ git pull
$ cd ~/.rbenv/plugins/ruby-build
$ git pull
とりあえず、これでMacローカルとLinuxサーバとで同様なRuby環境となりました。
開発時のローカルでは正常に動いていたのに、いざサーバにあげてみたら動かなくね?は?ってならないためにもバージョンは合わせておきたいですね。
ちなみに、
古いバージョンのRubyをアンインストールする
$ rbenv uninstall 2.2.1
なお、Linux上だと.rbenv配下のディレクトリ権限によっては怒られてしまうのでご注意(無理やり権限変更して削除はできるけど)。