Rubyコマンド作成雛形

ごくごくフツーに書くとtestしづらいので、無理矢理class化する。
class部とコマンド部を1ファイルにしておくと、rspecのパース時か何かにおかしくなるので、別ファイルにする。

#lib/MyCommand.rb
class MyCommand
  def main(args)
    # ARGVをrspecでテストできるように、メソッドの引数でARGVを設定できるようにする。
    ARGV.clear
    args.each{|file_name| ARGV << file_name}

    #引数エラーのとき。
    raise ArgumentError if 〜〜

    #メイン処理   
  end
end
#MyCommand.rb
begin
  MyCommand.new.main(ARGV.dup)
rescue ArgumentError
  puts <<_EOL_
Usage: >#{$0} [ filename ... ]
_EOL_
  exit 1
rescue
end