Module: Kettle::Rb::GemDependencies
- Defined in:
- lib/kettle/rb/gem_dependencies.rb
Overview
Curated runtime requirements that a tracked gem places on another tracked gem, per minor series.
Each requirement is copied from the dependent gem's own source at the series' newest patch (the patch GemFloors uses as the security floor), so consumers that apply those floors also get the matching requirement.
Defined Under Namespace
Classes: Entry
Constant Summary collapse
- ACTIVERECORD_SQLITE3_ADAPTER =
"activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb"- ROWS =
[ ["activerecord", "5.2", "sqlite3", ["~> 1.3", ">= 1.3.6"], "rails v5.2.8.1 #{ACTIVERECORD_SQLITE3_ADAPTER}"], ["activerecord", "6.0", "sqlite3", ["~> 1.4"], "rails v6.0.6.1 #{ACTIVERECORD_SQLITE3_ADAPTER}"], ["activerecord", "6.1", "sqlite3", ["~> 1.4"], "rails v6.1.7.10 #{ACTIVERECORD_SQLITE3_ADAPTER}"], ["activerecord", "7.0", "sqlite3", ["~> 1.4"], "rails v7.0.10 #{ACTIVERECORD_SQLITE3_ADAPTER}"], ["activerecord", "7.1", "sqlite3", [">= 1.4"], "rails v7.1.6 #{ACTIVERECORD_SQLITE3_ADAPTER}"], ["activerecord", "7.2", "sqlite3", [">= 1.4"], "rails v7.2.3.2 #{ACTIVERECORD_SQLITE3_ADAPTER}"], ["activerecord", "8.0", "sqlite3", [">= 2.1"], "rails v8.0.5.1 #{ACTIVERECORD_SQLITE3_ADAPTER}"], ["activerecord", "8.1", "sqlite3", [">= 2.1"], "rails v8.1.3.1 #{ACTIVERECORD_SQLITE3_ADAPTER}"] ].freeze
- ENTRIES =
begin entries = {} ROWS.each do |row| entry = Entry.new(*row) entry.requirements.freeze entry.freeze entries[[entry.gem_name, entry.series, entry.dependency]] = entry end entries.freeze end
Class Method Summary collapse
-
.entries_for(gem_name, dependency) ⇒ Array<Entry>
Entries for a dependent/dependency pair, oldest series first.
- .entry(gem_name, version, dependency) ⇒ Entry?
-
.requirements(gem_name, version, dependency) ⇒ Array<String>
Requirements
gem_nameplaces ondependency; empty when unknown.
Class Method Details
.entries_for(gem_name, dependency) ⇒ Array<Entry>
Returns entries for a dependent/dependency pair, oldest series first.
57 58 59 60 61 |
# File 'lib/kettle/rb/gem_dependencies.rb', line 57 def entries_for(gem_name, dependency) ENTRIES.values .select { |entry| entry.gem_name == gem_name.to_s && entry.dependency == dependency.to_s } .sort_by { |entry| Gem::Version.new(entry.series) } end |
.entry(gem_name, version, dependency) ⇒ Entry?
45 46 47 48 |
# File 'lib/kettle/rb/gem_dependencies.rb', line 45 def entry(gem_name, version, dependency) series = GemFloors.series_for(version) series && ENTRIES[[gem_name.to_s, series, dependency.to_s]] end |
.requirements(gem_name, version, dependency) ⇒ Array<String>
Returns requirements gem_name places on dependency; empty when unknown.
51 52 53 54 |
# File 'lib/kettle/rb/gem_dependencies.rb', line 51 def requirements(gem_name, version, dependency) found = entry(gem_name, version, dependency) found ? found.requirements : [] end |