AtomでのRuby入力補完にrobeを使う


概要

autocomplete-rubyがいいぞということでインストールを試みたものの
- ruby2.4以降だとrsenseのサーバが起動せず利用できない
- rsenseの開発が停止して数年経過している
- 代替案としてsolargraphがあったがこちらも動作せず
というわけで他に何かないか探していたところ「robe」が出てきました。

Atomのパッケージ「robe」は現在のところ候補をリストで表示するのみのようです。
宣言へのJumpやドキュメントへのリンクなどの機能はありません。

AtomでRubyの入力補完するのにおすすめのパッケージあれば教えてください。。。

環境

OS:MacOS Mojave
Ruby:2.6.x
   anyenv下のrbenvでインストール

robeとは

  • 開発が継続中(直近2019/5に更新あり)
  • Ruby1.9.3-2.6まで対応している。
  • emacsでよく使われている Git

インストール

  • robeをダウンロード
git clone https://github.com/dgutov/robe /任意のディレクトリ/robe
  • Atomにパッケージ「 autocomplete-robe」をインストール

  • settingにてrobeを設置したパスを設定
    /任意のディレクトリ/robe

  • gemのpryをbunlerでインストール
    Gemfileにgem 'pry'を記載してbundle updateを実行
    gem install pryでは動作しませんでした。

公式に以下の記載がありました

Please note that robe server requires pry to be installed (with bundler).

雑記

以下は、調査の過程でわかった内容です。rsenseの問題が解消するわけではないので、興味のある方だけお読みください

autocomplete-rubyが動作しない

rsenseのサーバが起動しないことが全ての原因。
補完機能が動作する仕組みとしては、rsenseがローカルでサーバを起動していてそれを利用してAtomのautocomplete-rubyが動作するようになっているために、動作しませんでした。
また、rsenseへのパスが設定できキックができていると、エラー自体はログファイルに書き込まれるために、表面上はエラーを表示しないので気付きにくかったが、そこはAtomのコンソール(Ctrl+Cmd+I)の内容を確認すると気づけます。

Ruby2.6.1のBundlerの不具合

/tmp/rsense.logに下記の内容が記載されていたため調査

Bundler 2 requires Ruby 2.3 or later. Either install bundler 1 or update to a supported Ruby version.

以下のサイトで説明がされていますが、Ruby2.6.1ではBundlerのバージョンが正しく起動しないという不具合がありました。
Ruby 2.6.1 の Bundler の不具合のお知らせ
Ruby 2.6.1 に含まれる Bundler 1.17.2 に不具合があるという話

これだ!
ということでRubyのバージョンを2.6.2と2.6.3でためしましたが、不具合自体は解消されたもののエラーそのものは改善されませんでした。。。

どうしてもrsenseがいいという場合には

Rubyのバージョンを2.3.8にすれば動作することは確認できました。