はじめに
Rubyは、国産のプログラミング言語として世界中で使われている言語で、ウエブ開発だけで無く、スタンドアローンプログラムなど様々な開発環境で利用されています。
今回は、複数のRubyをインストールして、環境に応じて切り替えることができる便利なRuby環境の構築方法を解説します。
2013年11月17日 22時11分
Rubyは、国産のプログラミング言語として世界中で使われている言語で、ウエブ開発だけで無く、スタンドアローンプログラムなど様々な開発環境で利用されています。
今回は、複数のRubyをインストールして、環境に応じて切り替えることができる便利なRuby環境の構築方法を解説します。
rbenvは、Sam Stephensonさんが開発しており、複数のRubyの環境を切り替えることができます。
通常、CygwinやUNIX環境にインストールされたRubyは、/usr/binや/usr/local/binなどシステムの一部としてインストールされますが、rbenvはシステムにインストールされたRubyと共存させて、ローカルな環境で使用することができます。
また、複数バージョンのRubyをrbenv環境にインストールして、実行するプログラムごとに動的に切り替えることもできますので、システムごとにRubyのバージョンを変えたマシンを用意する必要も無くなります。
作業の前提条件は、下記のとおりです。
ソフトウエア | バージョン |
---|---|
OS | Windows 7 Ultimate 32bit |
Cygwin | Setup Version 2.831 |
apy-cygを使用して、gitをインストールします。
$ apt-cyg install git
公式サイトから、ダウンロードします。
$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv $ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
Cloning into '/home/punio/.rbenv'... remote: Counting objects: 1743, done. remote: Compressing objects: 100% (749/749), done. remote: Total 1743 (delta 1131), reused 1517 (delta 962) Receiving objects: 100% (1743/1743), 254.66 KiB | 223 KiB/s, done. Resolving deltas: 100% (1131/1131), done.
Cloning into '/home/punio/.rbenv/plugins/ruby-build'... remote: Counting objects: 2547, done. remote: Compressing objects: 100% (1432/1432), done. remote: Total 2547 (delta 1147), reused 2272 (delta 911) Receiving objects: 100% (2547/2547), 362.92 KiB | 268 KiB/s, done. Resolving deltas: 100% (1147/1147), done.
.bashrcにrbenv設定を追加します。
export PATH=/cygdrive/c/Windows/system32 # for Windows export PATH=~/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:$PATH # for Cygwin if [ -d ~/.rbenv ]; then CC=/usr/bin/gcc PATH=~/.rbenv/bin:$PATH eval "$(rbenv init - bash)" fi export PATH=~/sbin:$PATH # for Packer export PATH=/cygdrive/c/HashiCorp/Vagrant/bin:$PATH # for Vagrant export PATH=/cygdrive/c/Program\ Files/Oracle/VirtualBox:$PATH # for VirtualBox
編集が終了したら、bashを再起動するか、Cygwin Terminalを新しく起動します。
$ exec bash
rbenvが有効になると、PATHは下記のようになります。
見やすくしていますが、実際は1行です。
$ echo $PATH
/cygdrive/c/Program Files/Oracle/VirtualBox /cygdrive/c/HashiCorp/Vagrant/bin /home/punio/sbin /home/punio/.rbenv/shims /home/punio/.rbenv/bin /home/punio/bin /bin /usr/bin /usr/sbin /usr/local/bin /cygdrive/c/Windows/system32
rbenvのインストールが終了しましたので、Rubyをインストールします。
インストール可能なRubyのバージョンを確認します。
$ rbenv install -l
Available versions: 1.8.6-p383 1.8.6-p420 1.8.7-p249 1.8.7-p302 1.8.7-p334 1.8.7-p352 1.8.7-p357 1.8.7-p358 1.8.7-p370 1.8.7-p371 1.8.7-p374 1.9.1-p378 1.9.1-p430 1.9.2-p0 1.9.2-p180 1.9.2-p290 1.9.2-p318 1.9.2-p320 1.9.3-dev 1.9.3-p0 1.9.3-p125 1.9.3-p194 1.9.3-p286 1.9.3-p327 1.9.3-p362 1.9.3-p374 1.9.3-p385 1.9.3-p392 1.9.3-p429 1.9.3-p448 1.9.3-preview1 1.9.3-rc1 2.0.0-dev 2.0.0-p0 2.0.0-p195 2.0.0-p247 2.0.0-preview1 2.0.0-preview2 2.0.0-rc1 2.0.0-rc2 2.1.0-dev 2.1.0-preview1 jruby-1.5.6 jruby-1.6.3 jruby-1.6.4 jruby-1.6.5 jruby-1.6.5.1 jruby-1.6.6 jruby-1.6.7 jruby-1.6.7.2 jruby-1.6.8 jruby-1.7.0 jruby-1.7.0-preview1 jruby-1.7.0-preview2 jruby-1.7.0-rc1 jruby-1.7.0-rc2 jruby-1.7.1 jruby-1.7.2 jruby-1.7.3 jruby-1.7.4 jruby-1.7.5 jruby-1.7.6 jruby-1.7.7 jruby-1.7.8 maglev-1.0.0 maglev-1.1.0-dev maglev-2.0.0-dev mruby-dev rbx-1.2.4 rbx-2.0.0 rbx-2.0.0-dev rbx-2.0.0-rc1 rbx-2.1.0 rbx-2.1.1 ree-1.8.6-2009.06 ree-1.8.7-2009.09 ree-1.8.7-2009.10 ree-1.8.7-2010.01 ree-1.8.7-2010.02 ree-1.8.7-2011.03 ree-1.8.7-2011.12 ree-1.8.7-2012.01 ree-1.8.7-2012.02 topaz-dev
今回は、2.1.0-preview1をインストールします。
$ LANG=C rbenv install 2.1.0-preview1 $ rbenv rehash
Downloading ruby-2.1.0-preview1.tar.gz... -> http://dqw8nmjcqpjn7.cloudfront.net/9df4f546f6b961895ba58a8afdf857da Installing ruby-2.1.0-preview1... Installed ruby-2.1.0-preview1 to /home/punio/.rbenv/versions/2.1.0-preview1
rehashコマンドは、rbenv環境に変更を加えた際に必ず実行する必要があります。
rbenv環境にインストールされているRubyのバージョンを表示します。
$ rbenv versions
2.1.0-preview1 (set by /home/punio/.rbenv/version)
rbenv環境で使用するRubyのバージョンを指定します。
$ rbenv global 2.1.0-preview1
再度、バージョンを確認すると使用しているバージョンに*(アスタリスク)が付いているのが確認できます。
$ rbenv versions
* 2.1.0-preview1 (set by /home/punio/.rbenv/version)
rbenv環境に変更を行った際に、毎回rehashコマンドを実行するのは面倒なので、代行してくれるrbenv-rehashgemパッケージをインストールします。
$ gem i rbenv-rehash --no-ri --no-rdoc $ rbenv rehash
rbenv-rehashパッケージをインストールした後、rehashコマンドを実行すると、今後はrehashコマンドを実行する必要はありません。
Rubyのお約束との言えるBundlerをインストールします。
$ gem i bundler --no-ri --no-rdoc
これまでにインストールした、gemパッケージのバージョンとパッケージリストを確認します。
$ ruby -v && gem -v && bundle -v
ruby 2.1.0dev (2013-09-22 trunk 43011) [i386-cygwin] 2.2.0.preview.1 Bundler version 1.3.5
$ gem list
DL is deprecated, please use Fiddle *** LOCAL GEMS *** bigdecimal (1.2.1) bundler (1.3.5) io-console (0.4.2) json (1.7.7) minitest (4.7.5) psych (2.0.1) rake (0.9.6) rbenv-rehash (0.3) rdoc (4.1.0.preview.1) test-unit (2.1.0.0)
なお、DL is deprecated, please use Fiddleは、user32.dllなどのWindows DLL内に定義されているWindows APIを使用する際に、Ruby 2.0系から実装されたFiddleライブラリを使用するようにメッセージを表示しているだけですので、実行上問題はありません。
rbenv環境だけで無く、Cygwin全般に言える事ですが、Cygwinではコマンドの実行中に
といったエラーメッセージが表示されることがあります。
このような問題が発生した場合、下記の手順でCygwin環境を修正します。
Cygwin環境とrbenv環境で使用しているDLLおよび、so(Shared Object)のリストを作成します。
$ find /usr/bin -name "*.so" -o -name "*.dll" > /tmp/rebase.lst $ find ~/.rbenv -name "*.so" -o -name "*.dll" >> /tmp/rebase.lst
ファイル名を指定して実行(Windowsキー + R)から、C:\cygwin\bin\ash.exeを起動します。
ash Terminalが起動したら、rebaseallを実行します。
/bin/rebaseall -v -T /tmp/rebase.lst
ash.exeを終了して、Cygwin Terminalを実行すると正常に動作すると思います。
まだ、エラーが発生するようでしたら、再度手順1から実行し直して下さい。