module Albacore::ConfigDSL
a small DSL
to mix into your configuration classes
Public Instance Methods
attr_path(*syms, &block)
click to toggle source
creates a new attr_writer for the symbols passed, such that a write to that method will normalise the paths of the written value: you can pass an optional callback
# File lib/albacore/config_dsl.rb, line 9 def attr_path *syms, &block given = block_given? syms.each do |sym| # this is the callback method when the value is set self.send(:define_method, :"__on_#{sym}") do |val| instance_exec(val, &block) if given end # this is the setter, it also calls the callback method # defined above. self.class_eval( %{def #{sym}= val @#{sym} = ::Albacore::Paths.normalise_slashes val __on_#{sym} @#{sym} end}) end end
attr_path_accessor(*syms, &block)
click to toggle source
read/write attribute with rewriting of set values to match the system's paths
# File lib/albacore/config_dsl.rb, line 31 def attr_path_accessor *syms, &block given = block_given? syms.each do |sym| # this is the callback method when the value is set self.send(:define_method, :"__on_#{sym}") do |val| instance_exec(val, &block) if given end # this is the setter and getter. The setter also calls # the callback method defined above. self.class_eval( %{def #{sym}= val @#{sym} = ::Albacore::Paths.normalise_slashes val __on_#{sym} @#{sym} end}) self.class_eval( %{def #{sym} @#{sym} end}) end end