class EndOfLife::RubyVersion
Constants
- DB_PATH
- EOL_API_URL
Attributes
version[RW]
Public Class Methods
eol_versions_at(date)
click to toggle source
# File lib/end_of_life/ruby_version.rb, line 16 def eol_versions_at(date) all_versions.filter { |version| version.eol_date <= date } end
from_file(file_name:, content:, parser: Parser)
click to toggle source
# File lib/end_of_life/ruby_version.rb, line 12 def from_file(file_name:, content:, parser: Parser) parser.parse_file(file_name: file_name, content: content) end
latest_eol(at: Date.today)
click to toggle source
# File lib/end_of_life/ruby_version.rb, line 20 def latest_eol(at: Date.today) eol_versions_at(at).max end
new(version_string, eol_date: nil)
click to toggle source
# File lib/end_of_life/ruby_version.rb, line 46 def initialize(version_string, eol_date: nil) @version = Gem::Version.new(version_string) @eol_date = eol_date freeze end
Private Class Methods
all_versions()
click to toggle source
# File lib/end_of_life/ruby_version.rb, line 29 def all_versions @all_versions ||= (fetch_end_of_life_api || load_file_fallback) .then { |json| JSON.parse(json, symbolize_names: true) } .map { |version| new(version[:latest], eol_date: Date.parse(version[:eol])) } end
fetch_end_of_life_api()
click to toggle source
# File lib/end_of_life/ruby_version.rb, line 35 def fetch_end_of_life_api Try { Net::HTTP.get URI(EOL_API_URL) }.value_or(nil) end
load_file_fallback()
click to toggle source
# File lib/end_of_life/ruby_version.rb, line 39 def load_file_fallback File.read(DB_PATH) end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/end_of_life/ruby_version.rb, line 57 def <=>(other) @version <=> other.version end
eol?(at: Date.today)
click to toggle source
# File lib/end_of_life/ruby_version.rb, line 53 def eol?(at: Date.today) self <= RubyVersion.latest_eol(at: at) end
to_s()
click to toggle source
# File lib/end_of_life/ruby_version.rb, line 61 def to_s @version.to_s end