rvmで入れた最新のrubyを使おうとしたら、Sublime Text 2がOS標準のを見に行ってしまうのですっきりさせた

昨日、rvmでruby1.9を入れたんですが、早速Sublime Text 2でruby書こうと思ったら1.8を読みに行ってました。

terminalで ruby -v したら1.9だよって出るんですけどねーおかしいなー

ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-darwin11.4.2]

ST2で00.rbを作り、以下のコードで動かしてみると

p RUBY_VERSION

出力は1.8だという。

"1.8.7"
[Finished in 0.2s]

調べてみたらみんな英語でわかんない、ライブラリのRuby.sublime-buildをいじれと言うんです。

Sublime Text 2 with RVM on OSX

多分ですね、こちらの~/bin/rvm_rubyを作るやり方は、rvmでスイッチするとST2から使う奴も自動的に切り替えてくれるんだと思います。しかし私は切り替えるつもりはさらさらないのでまずこのスクリプトはいりません。

さらに、ST2のバージョンアップとかでこの.sublime-buildが上書きされるんじゃないかとか不安になって、とりあえず昔の方法でそもそもMacが最初にrubyを入れる場所に1.9をコピーしてしまえという方法に出ました。

  1. rvmでuseしているのは rvm info でbinaries:ruby:と出ている場所。これをコピーする。
  2. 1.8.7が入っているのは/usr/bin/ruby*1。これを/usr/bin/ruby1.8.7に移動する。
  3. rvmでuseしているrubyを/usr/bin/rubyに移動する。
  4. ライブラリも同様に移動。*2
  5. ついでに一般的に使われているrubyのパスのシンボリックリンクを通す

こんなかんじで行きます。

rvm info

今回は
~/.rvm/rubies/ruby-1.9.3-p362/rubyだよ、と出ました。コピー。

sudo mv /usr/bin/ruby /usr/bin/ruby1.8.7
sudo cp ~/.rvm/rubies/ruby-1.9.3-p362/bin/ruby /usr/bin/

sudo mv /usr/lib/ruby /usr/lib/ruby1.8.7
sudo cp ~/.rvm/rubies/ruby-1.9.3-p362/lib/ruby /usr/lib/

これでいいはず…うおおsudoは緊張するなあ。

ためしにruby -vしてみます。

ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-darwin11.4.2]

うん、まあコピーだから壊れるとは思えないんですけどね。terminalのは大丈夫です

さきほどのST2の00.rbをbuildしてみます。

"1.9.3"
[Finished in 0.2s]

おおおおおおおできたああああああああ
コレが見たかったんだよ!うわあん。
もういまいましいので1.8は消してしまいましょう

sudo mv /usr/bin/ruby1.8.7
sudo mv /usr/lib/ruby1.8.7

これでうちのMacさんはこんな環境になりました。

  • ST2では1.9しか使えない
  • Terminalからは、rvm useすれば、1.8と1.9を好きにスイッチできるように

まあ、余計なことせず普通に1.9を入れればよかったかも。仕事で使っているわけでもないので、別に前のバージョンに戻さなくてよかったですね反省。