class Velcro::Config

Configuration settings for Velcro projects

Public Class Methods

new() click to toggle source
# File lib/velcro/config.rb, line 14
def initialize
  setup
  reset
end

Public Instance Methods

apply(config) click to toggle source
# File lib/velcro/config.rb, line 19
def apply(config)
  config.each_pair { |k, v| send("#{k}=", v) }
rescue NoMethodError => e
  method = e.message.match(/`(.*)\=/)[1]
  raise NoMethodError, "No configuration setting for :#{method} in #{default_options.join(', ')}"
end
reset() click to toggle source
# File lib/velcro/config.rb, line 26
def reset
  apply(defaults)
  load_rc
end

Private Instance Methods

default_options() click to toggle source
# File lib/velcro/config.rb, line 46
def default_options
  @default_options ||= defaults.keys.map{|k| ":#{k}" }
end
defaults() click to toggle source
# File lib/velcro/config.rb, line 42
def defaults
  self.class.instance_variable_get(:"@defaults")
end
load_rc() click to toggle source
# File lib/velcro/config.rb, line 33
def load_rc
  return unless File.exist?(rc_path)
  apply(YAML.load_file(rc_path)['config'])
end
rc_path() click to toggle source
# File lib/velcro/config.rb, line 50
def rc_path
  File.join(dotfiles, '.velcrorc')
end
setup() click to toggle source
# File lib/velcro/config.rb, line 38
def setup
  defaults.each_pair{|k, _| self.class.send(:attr_accessor, k.to_sym) }
end