【Ruby3.x】Gem::BasicSpecification::matches_for_glob()メソッドの使い方
matches_for_globメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
matches_for_globメソッドは、Gem::BasicSpecificationクラスに属し、指定されたファイルパスやディレクトリ名のパターンが、対象のGemに含まれるファイル群に一致するかどうかを判定するメソッドです。
このメソッドは、主にRubyのGemをビルドまたはインストールするプロセスにおいて、Gemに含めるべきファイルや除外すべきファイルを特定するために内部的に利用されます。引数として、globパターン(例えばlib/**/*.rbのようなワイルドカードを含む文字列)を受け取ります。そして、そのパターンと、Gemのルートディレクトリからの相対パスで表現される実際のファイルパスとを比較し、一致するかどうかを評価します。
具体的には、与えられたパターンに合致するファイルがGemのディレクトリ構造内に一つでも存在すればtrueを返します。もし、どのファイルもパターンに一致しない場合はfalseを返します。
開発者が直接このメソッドを呼び出すことは一般的ではありませんが、Gemを作成する際にGem::Specification内でspec.filesやspec.add_development_dependencyなどの設定にワイルドカードパターンを使用した場合、このmatches_for_globメソッドがそのパターンを解釈し、実際に含まれるファイルを決定する役割を担っています。これにより、Gemのファイル管理が柔軟かつ効率的に行われます。
構文(syntax)
1require 'rubygems' 2 3# Gem::BasicSpecification クラスのインスタンスを作成します。 4# matches_for_glob メソッドは、このインスタンスが内部的に保持するファイルパスのリストに対して処理を行います。 5# ここでは Gem::Specification (Gem::BasicSpecification のサブクラス) を使用してダミーのインスタンスを生成します。 6basic_spec_instance = Gem::Specification.new do |s| 7 s.name = "example_gem" 8 s.version = "1.0.0" 9 s.files = ["lib/example_gem.rb", "lib/example_gem/version.rb", "spec/example_gem_spec.rb", "README.md"] 10end 11 12# glob_pattern は、マッチさせたいファイルパスのパターンを指定する文字列です。 13# ワイルドカード (*, **) や文字クラス ([a-z]) などが使用できます。 14glob_pattern = "lib/**/*.rb" # 例: "lib/example_gem.rb" や "lib/example_gem/version.rb" にマッチ 15 16# matches_for_glob メソッドを呼び出す構文 17basic_spec_instance.matches_for_glob(glob_pattern)
引数(parameters)
glob
- glob: ルールにマッチするファイルパスのパターンを指定する文字列
戻り値(return)
Array<String>
指定されたグロブパターンに一致するファイルパスの配列を文字列として返します。