class Expire::Rules
How backups are expired
Attributes
rules[R]
Public Class Methods
from_options(options)
click to toggle source
# File lib/expire/rules.rb, line 6 def self.from_options(options) known_rules = RuleList.name_symbols rule_options = options.select { |opt, _| known_rules.include?(opt) } new(rule_options) end
from_yaml(file_name)
click to toggle source
# File lib/expire/rules.rb, line 14 def self.from_yaml(file_name) pathname = Pathname.new(file_name) yaml_text = pathname.read yaml_rules = YAML.safe_load(yaml_text, symbolize_names: true) new(yaml_rules) end
new(given = {})
click to toggle source
# File lib/expire/rules.rb, line 21 def initialize(given = {}) @rules = given.map do |rule_name, value| if value.respond_to? :rank value else rule_class = rule_class_for(rule_name) rule_class.from_value(value) end end end
Public Instance Methods
any?()
click to toggle source
# File lib/expire/rules.rb, line 34 def any? rules.any? end
apply(backups, reference_datetime)
click to toggle source
# File lib/expire/rules.rb, line 38 def apply(backups, reference_datetime) rules.sort.each { |rule| rule.apply(backups, reference_datetime) } backups end
count()
click to toggle source
# File lib/expire/rules.rb, line 44 def count @rules.length end
merge(prior_rules)
click to toggle source
# File lib/expire/rules.rb, line 48 def merge(prior_rules) self.class.new(to_h.merge(prior_rules.to_h)) end
to_h()
click to toggle source
# File lib/expire/rules.rb, line 52 def to_h rules.map { |rule| [rule.name.to_sym, rule] }.to_h end
Private Instance Methods
rule_class_for(key)
click to toggle source
# File lib/expire/rules.rb, line 58 def rule_class_for(key) rule_class_name_for(key).safe_constantize || raise(UnknownRuleError, key) end
rule_class_name_for(key)
click to toggle source
# File lib/expire/rules.rb, line 62 def rule_class_name_for(key) "::Expire::#{key.to_s.camelize}Rule" end