スクラッチからgemを作成する場合は、バンドラの組み込みのgemスケルトンを使用して編集するベースgemを作成できます。
$ bundle gem my_gem
これにより、新しいgemスケルトンを含むmy_gem
という名前の新しいディレクトリが作成されます。すでにgemがある場合は、Gemfileを作成してBundlerを使用して開発の依存関係を管理できます。次に例を示します。
source "https://rubygems.org"
gemspec
gem "rspec", "~> 3.9"
gem "rubocop", "0.79.0"
このGemfileでは、gemspec
メソッドはmy_gem.gemspec
ファイルのadd_runtime_dependency
でリストされたgemをインポートし、またgemをテストおよび開発するためにrspecとrubocopをインストールします。gemspecとGemfileからのすべての依存関係はbundle install
によってインストールされますが、rspecとrubocopはgem install mygem
またはbundle add mygem
には含まれません。gemspecのランタイム依存関係はGemfileでリストされているものと同様に処理され、開発の依存関係はデフォルトでグループ:development
に追加されます。:development_group
オプションを使用してそのグループを変更できます
gemspec :development_group => :dev
また、:path
を使用して特定のgemspecを指定することもできます。gemspecが/gemspec/path
にある場合は、次を使用します
gemspec :path => '/gemspec/path'
同じディレクトリに複数のgemspecがある場合は、:name
を使用して参照するgemspecを指定します
gemspec :name => 'my_awesome_gem'
これによりmy_awesome_gem.gemspec
が使用されます。それだけ!gemを開発するときはバンドラを使用し、それ以外の場合は通常どおりgemspecを使用してください。
$ gem build my_gem.gemspec