module ConfHelpers::ClassMethods
Attributes
conf_attrs[R]
Public Instance Methods
cmd_available?(cmd)
click to toggle source
# File lib/polisher/util/conf_helpers.rb, line 49 def cmd_available?(cmd) File.exist?(cmd) && File.executable?(cmd) end
conf_attr(name, default = nil)
click to toggle source
Defines a ‘config attribute’ or attribute on the class which this is defined in. Accessors to the single shared attribute will be added to the class as well as instances of the class. Specify the default value with the attr name or via an env variable
@example
class Custom extend ConfHelpers conf_attr :data_dir, '/etc/' end Custom.data_dir # => '/etc/' ENV['POLISHER_DATA_DIR'] = '/usr/' Custom.data_dir # => '/usr/' Custom.data_dir == Custom.new.data_dir # => true
# File lib/polisher/util/conf_helpers.rb, line 30 def conf_attr(name, default = nil) @conf_attrs ||= [] @conf_attrs << name send(:define_singleton_method, name) do |*args| nvar = "@#{name}".intern current = instance_variable_get(nvar) envk = "POLISHER_#{name.to_s.upcase}" instance_variable_set(nvar, default) unless current instance_variable_set(nvar, ENV[envk]) if ENV.key?(envk) instance_variable_set(nvar, args.first) unless args.empty? instance_variable_get(nvar) end send(:define_method, name) do self.class.send(name) end end
conf_attrs?()
click to toggle source
# File lib/polisher/util/conf_helpers.rb, line 10 def conf_attrs? conf_attrs.is_a?(Array) end
require_cmd!(cmd)
click to toggle source
# File lib/polisher/util/conf_helpers.rb, line 53 def require_cmd!(cmd) raise "command #{cmd} not available" unless cmd_available?(cmd) end
require_dep!(dep, obj=nil)
click to toggle source
# File lib/polisher/util/conf_helpers.rb, line 57 def require_dep!(dep, obj=nil) require dep rescue LoadError => e m = e.backtrace[obj.nil? ? 3 : 4].split.last ms = obj.nil? ? m : "#{obj.class} #{m}" raise "dependency #{dep} is not available - cannot invoke #{ms}" end