技術記事については、Qiitaにも稀に投稿しています。

rbenvとruby-buildで、MacOSXとLinuxにRuby環境を構築する

color_shoes

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配下のディレクトリ権限によっては怒られてしまうのでご注意(無理やり権限変更して削除はできるけど)。