こんにちは @sonotsです。thor って便利ですよね。ということで、今日は thor の小ネタをひとつ。

thor
を使うと Ruby でサブコマンド付きのコマンドを簡単に書く事ができます。その辺については私も以前参考にさせてもらった hibariya さんのブログ Thorで簡単にコマンドラインアプリをつくる を見てもらうといいかと思います。

で、最近はもっぱら optparse ではなく thor を使ってコマンドラインツールのオプション処理をさせているのですが、特にサブコマンドの必要がないコマンドを作りたい場合も当然あって、そういう場合にどうすればいいのかぐぐっても全く出てこず苦労したのでメモっておきます。

結論から言うと default_command マクロを使って実現できます。
require 'thor'

class Command < Thor
default_command :start

desc "start", "start the command"
def start
puts "Hello World"
end
end

Command.start(ARGV) 

これで $ ./command だけでコマンドを実行できるようになります!

お気づきの通り、default_command は、サブコマンドを指定しない場合のデフォルトサブコマンドを指定するためのマクロです。デフォルトは help になっていますね。

とまぁ、書いてしまうと本当にただの小ネタなのですが、なんとオフィシャルドキュメントにも記述がないですし、ぐぐっても全く出てこない(ノД`)・゚・ということでググラビリティをあげるためにブログにしたためておきます。

これでググれるようになりますね :D
それでは!

※ ちなみに自分はソースコード読んで見つけました ^^;