chruby 20161222.430(in MELPA)
Emacs integration for chruby

概要

chrubyはRubyのバージョンを切り替えるものです。

類似のものにrbenvやrvmがありますが、
chrubyの方が新しく、シンプルな仕組みになっています。

RSpecなどのgemによってインストールされたコマンドを
そのまま実行できるメリットもあります。

rbenvだとrbenv rehashが必要になります。

chrubyはシェル版 とelisp版があります。

chruby.elをインストールすると、
Emacs内部で使うRuby(eshellやcall-process)でも
Rubyの切り替えができるようになります。

chrubyを使う前にruby-installで使うRubyをインストールしてください。

http://www.oiax.jp/rails/zakkan/chruby_on_ubuntu.html
がとても詳しいです。

パッケージでインストールすれば設定は不要です。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてchrubyを使う方は
以下のコマンドを実行します。

M-x package-install chruby

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name chruby

使い方

eshell

eshell $ chruby "1.9"; ruby -v
("/r/.gem/ruby/2.1.0/bin" "/r/.rubies/ruby-1.9.3-p547/bin")
ruby 1.9.3p547 (2014-05-14) [x86_64-linux]
eshell $ chruby "2"; ruby -v
("/r/.gem/ruby/2.1.0/bin" "/r/.rubies/ruby-2.1.2/bin")
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]

call-process

(defun chruby-test (ver)
  (with-temp-buffer
    (chruby ver)
    (call-process "ruby" nil t nil "-v")
    (buffer-string)))
(chruby-test "1.9") ; => "ruby 1.9.3p547 (2014-05-14) [x86_64-linux]\n"
(chruby-test "2")   ; => "ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]\n"


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。