Class: GemXray::RailsKnowledge

Inherits:
Object
  • Object
show all
Defined in:
lib/gemxray/rails_knowledge.rb

Defined Under Namespace

Classes: Change

Instance Method Summary collapse

Constructor Details

#initialize(data_path: File.join(GemXray.root, "data", "rails_changes.yml")) ⇒ RailsKnowledge

Returns a new instance of RailsKnowledge.



9
10
11
# File 'lib/gemxray/rails_knowledge.rb', line 9

def initialize(data_path: File.join(GemXray.root, "data", "rails_changes.yml"))
  @data_path = data_path
end

Instance Method Details

#changes_for(rails_version) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/gemxray/rails_knowledge.rb', line 13

def changes_for(rails_version)
  return [] unless rails_version

  data.fetch("versions", {}).each_with_object([]) do |(since, payload), changes|
    next if Gem::Version.new(rails_version) < Gem::Version.new(since)

    Array(payload["removals"]).each do |item|
      changes << Change.new(
        gem_name: item.fetch("gem"),
        since: since,
        reason: item.fetch("reason"),
        source: item["source"]
      )
    end
  end
rescue ArgumentError
  []
end

#find_removal(gem_name, rails_version) ⇒ Object



32
33
34
# File 'lib/gemxray/rails_knowledge.rb', line 32

def find_removal(gem_name, rails_version)
  changes_for(rails_version).reverse.find { |change| change.gem_name == gem_name }
end