class Conjuror::Settings

Attributes

data[R]
file[R]
name[R]

Public Class Methods

directory_for(name) click to toggle source
# File lib/conjuror/settings.rb, line 56
def self.directory_for(name)
  File.join(ENV['HOME'], ".conjuror", name.to_s.gsub(/^\.+/, ''))
end

Public Instance Methods

[](key) click to toggle source

def reload

self.use @name, @file

end

# File lib/conjuror/settings.rb, line 34
def [] key
  self.reload
  @data[key]
end
[]=(key, value) click to toggle source

ensures that every new setting is first persisted to the file.

# File lib/conjuror/settings.rb, line 40
def []= key, value
  @data[key] = value
  save_configuration
  value
end
directory() click to toggle source
# File lib/conjuror/settings.rb, line 46
def directory
  self.class.directory_for(@name)
end
file=(file) click to toggle source
# File lib/conjuror/settings.rb, line 16
def file= file
  @file = (file ? file.to_s : "conf")
  @data = (YAML.load_file(self.path) rescue {})
end
method_missing(*args) click to toggle source
# File lib/conjuror/settings.rb, line 50
def method_missing *args
  return @data[args.first.to_s] if @data && config_defined?(args.first.to_s)
  return @data[args.first.to_sym] if @data && config_defined?(args.first.to_sym)
  raise NoMethodError, "Found no such method."
end
path() click to toggle source
# File lib/conjuror/settings.rb, line 21
def path
  raise Conjuror::NoConfigurationLoadedError unless @name && @file
  File.join(self.directory, @file + ".yml")
end
reload() click to toggle source
# File lib/conjuror/settings.rb, line 26
def reload
  self.use @name, @file
end
use(name = nil, file = nil) click to toggle source

Returns an instance of the class itself.

# File lib/conjuror/settings.rb, line 10
def use name = nil, file = nil
  self.name = name
  self.file = file
  self
end

Private Instance Methods

config_defined?(key) click to toggle source
# File lib/conjuror/settings.rb, line 72
def config_defined? key
  @data.has_key? key
end
name=(name) click to toggle source
# File lib/conjuror/settings.rb, line 62
def name= name
  @name = name
  FileUtils.mkdir_p self.directory unless File.directory? self.directory
end
save_configuration() click to toggle source
# File lib/conjuror/settings.rb, line 67
def save_configuration
  File.open(self.path, "w") { |f| f.puts @data.to_yaml }
  @data
end