Class: Colloquy::Helpers::Settings::SettingsProxy

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/colloquy/helpers/settings.rb

Instance Method Summary collapse

Instance Method Details

#[](identifier) ⇒ Object



72
73
74
75
76
77
78
# File 'lib/colloquy/helpers/settings.rb', line 72

def [](identifier)
  unless @settings_configurations[identifier.to_sym]
    raise Colloquy::SettingsFileNotFoundException, "A settings file for #{identifier} was not found, did you mis-spell or forget to configure it?"
  end

  @settings_configurations[identifier.to_sym]
end

#configureObject



20
21
22
23
# File 'lib/colloquy/helpers/settings.rb', line 20

def configure
  return if configured?
  configure!
end

#configure!Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/colloquy/helpers/settings.rb', line 29

def configure!
  unless settings_configuration_file.exist?
    raise Colloquy::SettingsConfigurationNotFoundException, "Cannot find #{settings_configuration_file}"
  end

  begin
    require_settings_libraries
  rescue LoadError
    raise Colloquy::SettingsGemsNotFoundException, "Cannot load the required settings gems."
  end

  @settings_configurations ||= {}
  settings_configuration_load

  @configured = true
end

#configured?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/colloquy/helpers/settings.rb', line 25

def configured?
  @configured
end

#loggerObject



96
97
98
# File 'lib/colloquy/helpers/settings.rb', line 96

def logger
  Colloquy.logger
end

#require_settings_librariesObject



50
51
52
# File 'lib/colloquy/helpers/settings.rb', line 50

def require_settings_libraries
  require "yaml"
end

#settings_configuration(params) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/colloquy/helpers/settings.rb', line 80

def settings_configuration(params)
  begin
    if params[0] == "/"
      yaml = YAML::load(File.open(params))
    else
      yaml = YAML::load(File.open(Colloquy.root.join(params)))
    end
  rescue Errno::ENOENT => e
    logger.error "File not found: #{params}"
    return {}
  rescue Psych::SyntaxError => e
    logger.error "File #{params} is not valid YAML"
    return {}
  end
end

#settings_configuration_exists?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/colloquy/helpers/settings.rb', line 68

def settings_configuration_exists?
  settings_configuration_file.exist?
end

#settings_configuration_fileObject



46
47
48
# File 'lib/colloquy/helpers/settings.rb', line 46

def settings_configuration_file
  Colloquy.root.join('config', 'settings.yaml')
end

#settings_configuration_loadObject



54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/colloquy/helpers/settings.rb', line 54

def settings_configuration_load
  return unless settings_configuration_exists?

  @settings_configuration_entries = File.open(settings_configuration_file, "r") { |f| YAML.load(f.read) }

  if @settings_configuration_entries
    @settings_configuration_entries.each do |identifier, params|
      @settings_configurations[identifier.to_sym] = settings_configuration(params)
    end
  else
    raise Colloquy::SettingsConfigurationNotFoundException, "Cannot find configuration in #{settings_configuration_file}. Is it empty?"
  end
end