class Erlnixify::Settings

Provides a library for settings to be accessed from accross the system

Constants

CHECK_COMMAND
CHECK_INTERVAL
CHECK_REGEX
CHECK_TIMEOUT
STARTUP_TIMEOUT

Attributes

options[RW]
settings[RW]

Public Class Methods

new(options) click to toggle source
# File lib/erlnixify/settings.rb, line 17
def initialize(options)
  config = options[:config]

  @settings = self.default_settings

  self.load! config if config
  self.merge(options)
  self.post_settings_setup
end

Public Instance Methods

[](key) click to toggle source
# File lib/erlnixify/settings.rb, line 57
def [](key)
  return @settings[key]
end
default_settings() click to toggle source
# File lib/erlnixify/settings.rb, line 27
def default_settings
  defaults = {release: nil,
    erlang: nil,
    home: ENV["HOME"],
    name: nil,
    fullnode: nil,
    command: nil,
    check: CHECK_COMMAND,
    checkregex: CHECK_REGEX,
    cookiefile: nil,
    cookie: nil,
    startuptimeout: STARTUP_TIMEOUT,
    checkinterval: CHECK_INTERVAL,
    checktimeout: CHECK_TIMEOUT,
    config: nil}
  defaults
end
find_erl_interface() click to toggle source
# File lib/erlnixify/settings.rb, line 116
def find_erl_interface
  erlang_root = @settings[:erlang]
  release_root = @settings[:release]
  if erlang_root && (File.directory? erlang_root)
    Dir.glob("#{erlang_root}/lib/erl_interface-*").first
  elsif release_root && (File.directory? release_root)
    Dir.glob("#{release_root}/lib/erl_interface-*").first
  end
end
find_erlang_root() click to toggle source
# File lib/erlnixify/settings.rb, line 82
def find_erlang_root
  if @settings[:erlang]
    @settings[:erlang]
  elsif File.directory? "/usr/local/lib/erlang"
    "/usr/local/lib/erlang"
  elsif File.directory? "/usr/lib/erlang"
    "/usr/lib/erlang"
  end
end
find_full_node() click to toggle source
# File lib/erlnixify/settings.rb, line 106
def find_full_node
  if @settings[:fullnode]
    @settings[:fullnode]
  else
    hostname = `hostname -f`.strip
    node = @settings[:name]
    "#{node}@#{hostname}"
  end
end
load!(filename, options = {}) click to toggle source
# File lib/erlnixify/settings.rb, line 45
def load!(filename, options = {})
  newsets = YAML::load_file(filename)

  env = options[:env].to_sym if options[:env]

  if env
    newsets = newsets[env] if newsets[env]
  end

  self.merge(newsets)
end
merge(data) click to toggle source
# File lib/erlnixify/settings.rb, line 61
def merge(data)
  @settings = @settings.inject({}) do |newhash, (key, value)|
    symkey = key.to_sym
    data_value = data[symkey]
    data_value = data[key.to_s] unless data_value
    if data_value
      newhash[symkey] = data_value
    else
      newhash[symkey] = value
    end
    newhash
  end
end
post_settings_setup() click to toggle source
# File lib/erlnixify/settings.rb, line 75
def post_settings_setup
  @settings[:erlang] = self.find_erlang_root
  @settings[:cookie] = self.find_cookie
  @settings[:erl_interface] = self.find_erl_interface
  @settings[:fullnode] = self.find_full_node
end