the glue

やってみたことで忘れそうなこと、役立ちそうなことなどをまとめています。たまに何気ない日常の話もします。

SublimeTextでLinterが使うrubyのバージョンを変更する話

最近はもっぱらRubyMineを使っていてSublime Textを起動しなくなりましたが、やはりフットワークの軽さは圧倒的にSublime Textだなぁと感じている私です。
(エディタ論争をするつもりはないですので大目に見てください m( )m)

Sublime TextではSublimeLinterを使っているのですが、Linterが利用するRubyのバージョンが古くて新しい文法を認めてくれないことが多々あります。

たとえばこんなの↓

f:id:sweep3092:20160927002016p:plain
f:id:sweep3092:20160927002015p:plain

これはRuby 2.3で導入された safe navigation operator ですね。Rails.try(sym) のように使える優れものです。

Ruby 2.3.0 リリース

SublimeLinterで使用しているRubyのバージョンが古いため、このような構文エラーが発生します。 コレを解決するには、SublimeLinterが使用するRubyを明示的に指定してやる必要があります。

前提

  • 今回はMac上での動作を想定(他のOSでも同様のはず)
  • rbenvでRubyを入れています(他の方法でもパスが違うだけのはず)

方法

まず、 Sublime Text -> Preferences -> Package Settings -> SublimeLinter -> Settings - User から設定ファイルを開きます。
f:id:sweep3092:20160927002936p:plain

Rubyのパスとバージョンを確認しておきます。今回はrbenvでRubyをインストールしたので、 ~/.rbenv/shimsrubyがあります。

[youk@youk-mbp13r]% which ruby
/Users/youk/.rbenv/shims/ruby
[youk@youk-mbp13r]% ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]

次に、以下のように pathsRubyのパスを書いて保存します。 すでにこのファイルになにか書いてある場合は、pathsの部分だけ変更するようにしてください。

{
    "user": {
        "paths": {
            "linux": [],
            "osx": ["~/.rbenv/shims"],
            "windows": []
        }
    }
}

SublimeTextを再起動すると、文句言われなくなっているハズ。

f:id:sweep3092:20160927003738p:plain