Bundler gemコマンドを使って、Gemを新規作成すると、名前の”-“と”_“の違いによって生成ファイルが異なる。

‘_‘の例

$ bundle gem my_tool -t -b

生成されるモジュール

module MyTool
      ....
end

’-‘の例

$ bundle gem my-tool -t -b

生成されるモジュール

module My
  module Tool
    ....
  end
end

このふるまいは、RubyGemsの規約に従っているようで、次のページに説明があった。

Name your gem - RubyGems Guides

  • _は複合語に使う
  • -はGemの拡張に使う

例えば、Jekyllなら、Jekyll本体がjekyllで、jekyll-archivesはその拡張のひとつである。-で区切られているので、モジュールは、module JekyllArchivesではなく、module Jekyllのなかに、module Archivesが定義されていると予想できるし、実際、そうなっている。