【一人 Ruby Advent Calendar 2017】` メソッドで外部コマンドの実行結果を取得する【16日目】

一人 Ruby Advent Calendar 2017 16日目の記事になります。
遅れてしまいすみません。

Ruby` メソッド

Ruby では外部コマンドを呼び出す手段がいくつかあるんですが、以下のように ` メソッドを使用することで `{command}` の結果を戻り値として取得することができます。

p `ruby --version`
# => "ruby 2.4.2p198 (2017-09-14 revision 59899) [x64-mingw32]\n"

p `node --version`
# => "v8.7.0\n"

標準入力など渡すことはできませんが、簡単なコマンドの出力結果を取得する場合に便利です。

` メソッドを再定義する

さて、この ` なんですが、実は Kernel のメソッドとして定義されており、ユーザ側で再定義することもできます。

module Kernel
    def ` command
        p command.class
        # => String
        "#{command} --version"
    end
end

p `ruby`
# => "ruby --version"

べんりそう。

まとめ

  • `{コマンド名}` で外部コマンドの実行結果を取得することができるできる
  • `Kernel のメソッドなので拡張することができる

べんり。