Skip to content

Instantly share code, notes, and snippets.

@havenwood
Created August 22, 2019 13:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save havenwood/3390af146094df37e7f75fd187aff63a to your computer and use it in GitHub Desktop.
Save havenwood/3390af146094df37e7f75fd187aff63a to your computer and use it in GitHub Desktop.
Response to IRC question
require 'bundler'
def lockfile
Bundler.read_file Bundler.default_lockfile
end
def lockfile_gems
Bundler::LockfileParser.new(lockfile).specs.map do |spec|
[spec.name, spec.version ]
end
end
def missing_gems
lockfile_gems.select do |name, version|
dep = Gem::Dependency.new name, version
Gem::Specification.find { |spec| spec != dep }
end
end
def missing_extensions
missing_gems.select do |name, version|
dep = Gem::Dependency.new name, version
((spec, _), _), _ = Gem::SpecFetcher.fetcher.spec_for_dependency dep
spec.missing_extensions?
end
end
puts missing_extensions if missing_extensions.any?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment