Thor で定義したサブコマンドから値を返す

サブコマンドとして定義したメソッドの戻り値がそのまま Thor.start の戻り値になるみたい。

ソース

require "thor"

class CLI < Thor
    desc "", ""
    def plus a, b
        a.to_i + b.to_i
    end

    desc "", ""
    def minusa a, b
        a.to_i - b.to_i
    end
end


CLI.start %w(plus 1 2)
# => 3
CLI.start %w(minus 3 4)
# => -1

こういう風な使い方ができると思ってなかったのでちょっと面白い。