推奨される RubyGem の名前の付け方
RubyGem の名前をつけるときには推奨のつけ方があるんです.
Name your gem - RubyGems Guides によると, 次のようなものになります:
複数ワードにはアンダースコアを使う
メインのクラス名もしくはモジュール名が 2 ワード以上なら, その gem の名前はアンダースコアで区切ります.
例えば
ExampleGem
というExample
とGem
という 2 ワードを含んだクラス or モジュールを使う場合, gem の名前はexample_gem
になります.そしてその gem のメインのファイルパスは
example_gem/lib/example_gem.rb
になります.なので
require 'example_gem'
で読み込めます.他の gem のエクステンションにはダッシュを使う
例えば
example
という gem があったとして, その gem のExample
というクラス or モジュールにExt
というクラス or モジュールのエクステンションを追加したい場合 gem の名前はexample-ext
となります.そしてその gem のメインのファイルパスは
example-ext/lib/example/ext.rb
となります.なので
require 'example/ext'
で読み込めます.そしてクラス or モジュール名は
Example::Ext
となります.アンダースコアとハイフンは適切に使い分ける
例えば
ExampleGem
というクラス or モジュールにExt
というクラス or モジュールのエクステンションを追加したい場合, 上記 2 つのルールを組み合わせて gem の名前はexample_gem-ext
となります.そしてその gem のメインのファイルパスは
example_gem-ext/lib/example_gem/ext.rb
となります.なので
require 'example_gem/ext'
で読み込めます.そしてクラス or モジュール名は
ExampleGem::Ext
となります.全て小文字にする
Gem の名前は全て小文字にします.
というのも Windows と macOS は小文字と大文字を区別しないファイルシステムなので, 大文字を含んだ名前の gem でも
require
するときに小文字でその gem の名前を指定しても読み込めてしまうのですが Linux などの小文字と大文字を区別するファイルシステムではrequire
するときに同じように小文字でその gem の名前を指定しても読み込むことができません.なのでこのような事態を防ぐために gem の名前をつけるときは全て小文字にします.
まとめると次のようになります:
Gem の名前 | ファイル名 | require するとき | クラス or モジュール名 |
---|---|---|---|
example_gem | example_gem.rb | require 'example_gem' | ExampleGem |
example-ext | example/ext.rb | require 'example/ext' | Example::Ext |
example_gem-ext | example_gem/ext.rb | require 'example_gem/ext' | ExampleGem::Ext |
まとめ
このような gem の名前の付け方はしなければいけない決まりではなくあくまで推奨というものですが, このように名付けられた gem はその gem のメインファイルはどんなファイル名で, どんな階層にあって, どんなクラス, モジュール名なのかということを gem の名前から推測することができるようになります.
必ずしも全てのケースにおいてこのような推奨ルールに従って gem の名前をつけることはできないかもしれないですが, できるならばこのような推奨ルールに従って gem を名付けられると色々といいのではないかと思います.
関連記事
Ruby のグローバル変数をそれぞれ調べてみた2018.06.12
新しい GPG 鍵ペアを生成する手順2018.03.31
find コマンドを使ってファイルを検索する方法2018.05.22
Ruby のクラスやメソッドのドキュメントを見れる ri コマンドが便利な件2018.09.08
Ruby の関数プログラミングでオイラー積を計算してみた2018.07.02