Class: GemWhy::Analyzer
- Inherits:
-
Object
- Object
- GemWhy::Analyzer
- Defined in:
- lib/gem_why/analyzer.rb
Overview
Analyzes gem dependencies to find dependents and dependency chains
Instance Method Summary collapse
-
#find_dependency_chains(target_gem_name) ⇒ Array<Array<Hash>>
Finds all dependency chains leading to the target gem.
-
#find_direct_dependents(target_gem_name) ⇒ Array<Dependent>
Finds all gems that directly depend on the target gem.
-
#initialize ⇒ Analyzer
constructor
A new instance of Analyzer.
Constructor Details
#initialize ⇒ Analyzer
Returns a new instance of Analyzer.
8 9 10 |
# File 'lib/gem_why/analyzer.rb', line 8 def initialize @spec_cache = {} end |
Instance Method Details
#find_dependency_chains(target_gem_name) ⇒ Array<Array<Hash>>
Finds all dependency chains leading to the target gem
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/gem_why/analyzer.rb', line 24 def find_dependency_chains(target_gem_name) chains = [] normalized_target = target_gem_name.downcase Gem::Specification.each do |spec| paths = find_paths_to_target(spec.name, normalized_target, []) chains.concat(paths) end chains.uniq.sort_by { |chain| chain.first[:name] } end |
#find_direct_dependents(target_gem_name) ⇒ Array<Dependent>
Finds all gems that directly depend on the target gem
15 16 17 18 19 |
# File 'lib/gem_why/analyzer.rb', line 15 def find_direct_dependents(target_gem_name) Gem::Specification.flat_map do |spec| direct_dependents_for_spec(spec, target_gem_name) end.sort_by(&:name) end |