Class: Bundler::Finder
- Inherits:
-
Object
- Object
- Bundler::Finder
- Defined in:
- lib/bowline/bundler/finder.rb
Overview
Finder behaves like a rubygems source index in that it responds to #search. It also resolves a list of dependencies finding the best possible configuration of gems that satisifes all requirements without causing any gem activation errors.
Instance Method Summary collapse
-
#initialize(*sources) ⇒ Finder
constructor
Takes an array of gem sources and fetches the full index of gems from each one.
-
#search(dependency) ⇒ Object
Searches for a gem that matches the dependency.
Constructor Details
#initialize(*sources) ⇒ Finder
Takes an array of gem sources and fetches the full index of gems from each one. It then combines the indexes together keeping track of the original source so that any resolved gem can be fetched from the correct source.
Parameters
- *sources<String>
-
URI pointing to the gem repository
15 16 17 18 19 |
# File 'lib/bowline/bundler/finder.rb', line 15 def initialize(*sources) @cache = {} @index = {} @sources = sources end |
Instance Method Details
#search(dependency) ⇒ Object
Searches for a gem that matches the dependency
Parameters
- dependency<Gem::Dependency>
-
The gem dependency to search for
Returns
- [Gem::Specification]
-
A collection of gem specifications
matching the search
29 30 31 32 33 34 35 |
# File 'lib/bowline/bundler/finder.rb', line 29 def search(dependency) @cache[dependency.hash] ||= begin find_by_name(dependency.name).select do |spec| dependency =~ spec end.sort_by {|s| s.version } end end |