ターミナルからRubyMineを起動、比較、マージなどする

ターミナルからRubyMineを起動、比較、マージなどする

Table of Contents

RubyMineは便利ですが、普段はターミナルを触ることが多いので、ターミナルからRubyMineを開く方法について調べたら、開く以外のことができることが分かったのでまとめます。

ターミナルからRubyMineで開く

まずターミナルからRubyMine.appwを開くにはopenコマンドを使います。 最後のドットはそのフォルダをRubyMineで開くことを意味します。

$ open -na "RubyMine.app" .
  • -a : アプリケーションを指定する
  • -n : アプリが起動済みでも新しいインスタンスで開く

シェルスクリプト化する

シェルスクリプトを用意

#!/bin/sh
open -na "RubyMine.app" --args "$@"

これをrubymineという名前で保存します。

実行権限付与

さっき作ったシェルスクリプトの実行権限を変更します

$ chmod 711 rubymine

これでターミナルからrubymineスクリプトを実行できるようになります。

パスが見えるようにする

このままだと配置した場所のパスが必要になるので、ターミナルが見えるようにパスが見える場所に配置します。

$ mv rubymine /usr/local/bin/

なおこの場所でなくともcat $PATHで表示されるディレクトリ上にならどこでも構いません。

RubyMineに渡せる引数一覧

  • 引数なし : RubyMine起動
  • ファイルまたはディレクトリのパス : RubyMineで指定パスを開きます
  • diff : 渡された2つのファイルの差分を見ます
  • merge : 渡されたファイル2~3つと出力パスでマージします
  • format : 指定されたファイルにコードスタイルのフォーマットを適用します
  • inspect : 指定プロジェクトでコード検査します

RubyMineでファイル差分を見る

Syntax: rubymine diff <path1> <path2>

$ echo "Hoge" > hoge.txt
$ echo "Fuga" > fuga.txt
$ rubymine diff hoge.txt fuga.txt

RubyMine diff画面

RubyMineでファイルマージする

Syntax: rubymine merge <path1> <path2> [<base>] <output>

$ echo "Hoge" > hoge.txt
$ echo "Fuga" > fuga.txt
$ touch base.txt
$ touch out.txt
$ rubymine diff hoge.txt fuga.txt base.txt out.txt

RubyMine merge画面

RubyMineでファイルフォーマットを適用する

Syntax: rubymine format [<options>] <path ...>

$ cat ruby.rb
def main
puts "hogehogehoge"
end
$ rubymine ruby.rb
$ cat ruby.rb
def main
  puts "hogehogehoge"
end

どうやらrubocopが動くようではなく、RubyMine内の設定(Editor | Code Style)に沿うようです。

Options

  • -h : ヘルプ表示
  • -m or -mask : コンマ区切りでマスクファイルの一覧
    • 例 : -m .xml,.html
  • -r or -R : 階層処理
  • -s or -settings : ExportされたRubyMine内の設定

RubyMineでコード検査する

Syntax: rubymine inspect <project> <inspection-profile> <output> [<options>]

RubyMineでコード書いていると警告されるアレです。
ターミナル上からコード検査をして結果を外部ファイルに出力します。

~/Downloads/sandboxディレクトリがあり、その中にruby.rbファイルがあった場合

$ rubymine inspect ~/Downloads/sandbox/ ~/Downloads/sandbox/.idea/inspectionProfiles/Project_Default.xml ~/Downloads/sandbox/InspectionResults -v2 -d ~/Downloads/sandbox/

Options

  • -d : 検査ディレクトリの指定.
  • -format : 結果フォーマットの指定(xml/json/plan). デフォはxml
  • v : 検査詳細レベル
    • -v0 : デフォルト(最も低い)
    • -v1 : ミディオム
    • -v2 : 最大

まとめ

diffとmergeがあるのは知りませんでした。
渡せる引数からしてgit mergetoolに登録できるかもしれません。
もし渡せたら重いp4mergeとはオサラバです。

RubyMine - Command-line interfaceを参考にしてあります。 なお公式記事内では inspectrinspect となっています。rinspectでは動かなかったので多分タイポです。

このエントリーをはてなブックマークに追加