LoginSignup
0
2

More than 5 years have passed since last update.

Bundler gem を利用して Ruby の依存 gem の一覧をプログラムで扱えるようにする

Posted at

やんごとなき理由により 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"]
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2