やんごとなき理由により Gemfile.lock もしくは gemspec から gem 名の一覧を Ruby の処理中に取得し、
その結果をゴニョゴニョする必要がありました。
サンプル
以下の gemspec と Gemfile を元に検証します
gemspec
gemspec
Gem::Specification.new do |spec|
spec.name = "hoge"
#略
spec.add_dependency 'dotenv', '~> 2.1'
spec.add_dependency 'thor', '~> 0.19'
spec.add_development_dependency 'simplecov', '~> 0.10'
spec.add_development_dependency 'yard', '~> 0.8'
end
Gemfile
Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
gem "bundler"
gem "pry"
group :development do
gem "tapp"
end
group :test do
gem "kosi"
end
gemspec
gemspec の読み込み
require "bundler"
require "pp"
gemspec = Bundler.load_gemspec_uncached("hoge.gemspec")
pp gemspec.dependencies.map(&:name)
- 出力
$ bundle exec ruby gemspec_sample.rb
["dotenv", "thor", "simplecov", "yard"]
Gemfile.lock の読み込み
require "bundler"
require "pp"
locksrc = File.read(Bundler.default_lockfile.to_path)
lockfile = Bundler::LockfileParser.new(locksrc)
pp lockfile.dependencies.map(&:name)
- 出力
["bundler", "kosi", "pry", "simplecov", "hoge", "tapp", "yard"]