module Creq::ParamHolder

Module for holding parameters in .yml file Usage:

module Settings
  extend ParamHolder
  extend self

  parameter :param1, default: 2
  parameter :param2, default: 2
end

require_relative 'settings'

pp Settings.param1
pp Settings.param2

Public Instance Methods

load() click to toggle source
# File lib/creq/param_holder.rb, line 42
def load
  return unless File.exist?(storage)
  prop = YAML.load(File.read(storage))
  prop.each{|k, v|
    self.instance_variable_set("@#{k}", v)
  }
end
parameter(name, options) click to toggle source

parameter to hold

# File lib/creq/param_holder.rb, line 26
def parameter(name, options)
  define_method("#{name}") do
    @loaded ||= begin
      load
      true
    end
    self.instance_variable_get("@#{name.to_s}")
  end

  define_method("#{name}=") do |value|
    self.instance_variable_set("@#{name.to_s}", value)
  end

  self.instance_variable_set("@#{name.to_s}", options[:default])
end
save() click to toggle source
# File lib/creq/param_holder.rb, line 50
def save
  {}.tap {|prop|
    self.instance_variables.each{|v| prop[v.to_s[1..-1]] = self.instance_variable_get("#{v}")}
    File.write(storage, YAML.dump(prop))
  }
end
storage() click to toggle source
# File lib/creq/param_holder.rb, line 57
def storage
  "#{name.downcase}.yml"
end