Class: Gel::MultiStore
- Inherits:
-
Object
- Object
- Gel::MultiStore
- Defined in:
- lib/gel/multi_store.rb
Constant Summary collapse
- VERSION =
"#{RbConfig::CONFIG["ruby_version"]}"
Instance Attribute Summary collapse
-
#monitor ⇒ Object
readonly
Returns the value of attribute monitor.
-
#root ⇒ Object
readonly
Returns the value of attribute root.
Class Method Summary collapse
Instance Method Summary collapse
- #[](architecture, version = false) ⇒ Object
- #each(gem_name = nil, &block) ⇒ Object
- #gem(name, version) ⇒ Object
- #gem?(name, version, platform = nil) ⇒ Boolean
- #gems(name_version_pairs) ⇒ Object
- #gems_for_lib(file) ⇒ Object
-
#initialize(root, stores) ⇒ MultiStore
constructor
A new instance of MultiStore.
- #libs_for_gems(versions, &block) ⇒ Object
- #paths ⇒ Object
- #prepare(versions) ⇒ Object
- #stub_set ⇒ Object
Constructor Details
#initialize(root, stores) ⇒ MultiStore
Returns a new instance of MultiStore.
12 13 14 15 16 17 |
# File 'lib/gel/multi_store.rb', line 12 def initialize(root, stores) @root = File.realpath(File.(root)) if root @stores = stores @monitor = Monitor.new end |
Instance Attribute Details
#monitor ⇒ Object (readonly)
Returns the value of attribute monitor.
10 11 12 |
# File 'lib/gel/multi_store.rb', line 10 def monitor @monitor end |
#root ⇒ Object (readonly)
Returns the value of attribute root.
9 10 11 |
# File 'lib/gel/multi_store.rb', line 9 def root @root end |
Class Method Details
Instance Method Details
#[](architecture, version = false) ⇒ Object
27 28 29 |
# File 'lib/gel/multi_store.rb', line 27 def [](architecture, version = false) @stores[self.class.subkey(architecture, version)] end |
#each(gem_name = nil, &block) ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/gel/multi_store.rb', line 56 def each(gem_name = nil, &block) return enum_for(__callee__, gem_name) unless block_given? @stores.each do |_, store| store.each(gem_name, &block) end end |
#gem(name, version) ⇒ Object
64 65 66 67 68 69 70 |
# File 'lib/gel/multi_store.rb', line 64 def gem(name, version) @stores.each do |_, store| g = store.gem(name, version) return g if g end nil end |
#gem?(name, version, platform = nil) ⇒ Boolean
84 85 86 87 88 89 |
# File 'lib/gel/multi_store.rb', line 84 def gem?(name, version, platform = nil) @stores.any? do |key, store| next if platform && !key.start_with?(platform) store.gem?(name, version) end end |
#gems(name_version_pairs) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/gel/multi_store.rb', line 72 def gems(name_version_pairs) result = {} @stores.each do |_, store| result.update(store.gems(name_version_pairs)) do |l, r| l end end result end |
#gems_for_lib(file) ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/gel/multi_store.rb', line 48 def gems_for_lib(file) @stores.each do |_, store| store.gems_for_lib(file) do |gem, subdir| yield gem, subdir end end end |
#libs_for_gems(versions, &block) ⇒ Object
91 92 93 94 95 |
# File 'lib/gel/multi_store.rb', line 91 def libs_for_gems(versions, &block) @stores.each do |_, store| store.libs_for_gems(versions, &block) end end |
#paths ⇒ Object
23 24 25 |
# File 'lib/gel/multi_store.rb', line 23 def paths @stores.values.flat_map(&:paths).uniq end |
#prepare(versions) ⇒ Object
42 43 44 45 46 |
# File 'lib/gel/multi_store.rb', line 42 def prepare(versions) @stores.each do |_, store| store.prepare(versions) end end |