ぱろっと・すたじお

技術メモなどをまったりと / my site : http://parrot-studio.com/

MacのRVM+Homebrew環境にRuby2.0をインストールしてみた

※本記事は自鯖Blogの転載です
※元記事は2013/02/25に書かれました

http://blog.parrot-studio.com/2013/02/ruby2-with-rvm-and-homebrew/

※半年前の記事なので、情報が古い部分もありますが、そのまま転載します


まずはRuby2.0 & Ruby20周年おめでとうございますヽ(`・ω・´)ノ


http://www.ruby-lang.org/ja/news/2013/02/24/ruby-2-0-0-p0-is-released/


ということで、早速MacにRuby2.0をインストールしようとしたのですが、
RVMの挙動が大きく変わっていたため、ちょっとややこしいことに(´-ω-)



以前はRVMの管理下に独自でreadlineやopensslを入れ、
それを指定してインストールとかやってました


しかし、Ruby2.0にあわせたのかわかりませんが、
必要なライブラリはHomebrew側で管理するように変わったようです*1


そのため、普通に「rvm install 2.0.0」すれば、
Homebrewが起動していろいろ入れてくれるのですが、
ちょっと気持ち悪いので、個別にインストールしてみました

Homebrewで関連ライブラリをインストール


すでにRuby1.9.3がインストールされていましたし、
Rabbitのおかげで大量のライブラリも入っていたので、
「Ruby2.0に必要なもの」がどれかはわかりません(´・ω・`)


が、とりあえず自宅 & 会社のMacで要求されたのは以下のライブラリでした

  • libtool
  • libyaml
  • readline
  • libxslt
  • openssl
  • curl-ca-bundle
  • sqlite


これで足りないとしても、rvmがhomebrew経由でインストールしようとするので、
おそらく問題ないのですが、個人的に気持ち悪かったので・・・(´-ω-)


なお、iconvは2.0から廃止されたそうです


http://jp.rubyist.net/magazine/?0041-200Special-note

RVMでRuby2.0をインストール


以前は「--with-gcc=clang」とかつけていたのですが、
とりあえずなくても入ったように見えます
いまいちわかりませんが(´-ω-)

$ rvm install 2.0.0


昨夜試した自宅環境だとgemのインストールで止まったのですが、
会社の環境では問題なかったので、
もしかするとRVM自体が修正されたかもしれません

bundler周りの挙動


最近のRubyはbundlerが必須ですが、1.3.0以上が必須で、
普通に「gem install bundler」しても1.2.4(2013/02/24時点)なので、
エラーが出て動きませんでした(´-ω-)


これも先ほど試したら「1.3.0.pre.8」がインストールされていたので、
RVMが修正されたのか、「gem install bundler」してはいけないのか、
ちょっとわかりません

SSLの問題

先日書いたのと同じSSLの問題が、Ruby2.0でも発生します


http://blog.parrot-studio.com/2013/01/macosx-ruby193-ssl-error/


しかも、Gemfileにおける「source :rubygems」がNGになり、
「source 'https://rubygems.org'」と書くようになったため、
SSLが正しく動かないとbundleが叩けませんΣ(゚Д゚)ガーン *2


【追記:2013/02/27】


どうもこの方法は筋が良くないようなので、
こちらの手順を使ってください


homebrew で入れた openssl を使って Ruby をコンパイルすると SSL 利用時に証明書エラーが発生する場合の対応 - Qiita [キータ]


要は、curl-ca-bundleが提供する証明書を、
openssl以下に置けばOKです


curl-ca-bundleは上記の通り、
rvmが要求してきますので、必ず存在するはずです


【追記終わり】


手順としては先ほどの記事と同じで、
まずRubyが参照している証明書を確認します

$ ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE' 
"/usr/local/etc/openssl/cert.pem"


あとはダウンロードして配置するだけです

$ cd /usr/local/etc/openssl/
$ curl -O http://curl.haxx.se/ca/cacert.pem
$ mv cacert.pem cert.pem

その他気づいた点


私が開発しているRO向けシステム、
「ROGv」をRuby2.0で動かしてみたところ、
bundleでいくつか問題が出たものの、基本的にはそのまま動きました


https://github.com/parrot-studio/rogv_server


さすがは1.9.3との100%互換です(`・ω・´) b


問題が出たのは、「pry-debugger」が参照している、
「debugger」というgemです


Ruby2.0ではデバッグ周りが変わってますし、
システムの挙動そのものには影響しないので、
とりあえずpry-debuggerをコメントアウトしています


あと、Ruby2.0と関係あるかわかりませんが、
mongoが参照しているbson_extが認識されてないように見えます


Gemfile.lockにはたしかにあるのですが、
padrinoで起動するとインストールしろって警告が出るんですよね・・・
問題なく動いているので放置してますが




以上、私が試したことをメモしてみましたが、
おそらく2.0での本格的な開発はまだ早いと思われます


少なくとも、Rails4が正式リリースされるくらいまで、
様子見した方がいいとは・・・(´-ω-)



追記


ついでに1.9.3をp392にアップデートしようとしたところ、
やはり「rvm install 1.9.3」だけでOKでした


Homebrewと連動したことで、
長いコマンドを書かなくて良くなったのはありがたいですねヽ(`・ω・´)ノ

*1: Macportsだとどうなるのか、というのは気になりますが、それはきっと誰かが・・・

*2: 明示的に「http」を指定することはできますが、推奨はされません