Ruby の Thor で run コマンドを定義したかった
次のコードのように Thor で run コマンドを定義したかったんですがエラーになりました。
require "thor" class MyCLI < Thor desc "", "" def run puts "run" end end MyCLI.start ["run"] # error: `is_thor_reserved_word?': "run" is a Thor reserved word and cannot be defined as command (RuntimeError)
Thor では run
といくつかのコマンド名はメソッドで定義する事ができないみたいです。。
回避方法
Twitter で @magicdrive さんに教えてもらったんですが、map
クラスメソッドを使えば run
コマンドを定義する事ができます。
require "thor" class MyCLI < Thor desc "", "" # 別名でていgい def run_ puts "run" end # map で run に紐付け map "run" => "run_" end MyCLI.start ["run"]
これで run コマンドが使えるようになりました。