Class: Staticd::Config

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/staticd/config.rb

Overview

Manage Staticd Configuration.

Can load configuration from a hash, from environment variables with the STATICD_ prefix or from a config file in yaml format.

Once loaded,configuration is available from anywhere in the app using Staticd::Config.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfig

Returns a new instance of Config.



81
82
83
# File 'lib/staticd/config.rb', line 81

def initialize
  @settings = {}
end

Class Method Details

.<<(settings) ⇒ Object

Push settings into Staticd global configuration.

String setting keys are converted to symbols.

Example:

Staticd::Config << {"foo" => bar}
Staticd::Config[:foo]
# => "bar"


59
60
61
# File 'lib/staticd/config.rb', line 59

def self.<<(settings)
  instance << settings
end

.[](setting) ⇒ Object

Get a setting value from the Staticd global configuration.



69
70
71
# File 'lib/staticd/config.rb', line 69

def self.[](setting)
  instance[setting]
end

.[]=(setting, value) ⇒ Object

Same as << method.



64
65
66
# File 'lib/staticd/config.rb', line 64

def self.[]=(setting, value)
  instance << {setting => value}
end

.key?(setting_name) ⇒ Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/staticd/config.rb', line 73

def self.key?(setting_name)
  instance.key?(setting_name)
end

.load_envObject

Load configuration from environment variables.

Example:

ENV["STATICD_FOO"] = "bar"
Staticd::Config.load_env
Staticd::Config[:foo]
# => "bar"


22
23
24
25
26
27
28
29
30
# File 'lib/staticd/config.rb', line 22

def self.load_env
  settings = {}
  env = ENV.select { |name, value| name =~ /^STATICD_/ }
  env.each do |name, value|
    setting = name[/^STATICD_(.*)/, 1].downcase.to_sym
    settings[setting] = value
  end
  instance << settings
end

.load_file(config_file) ⇒ Object

Load configuration from a YAML file.

The configuration file can contain ERB code.

Example (config file)

---
foo: bar

Example:

Staticd::Config.load_file("/etc/staticd/staticd.yml")
Staticd::Config[:foo]
# => "bar"


44
45
46
47
48
49
# File 'lib/staticd/config.rb', line 44

def self.load_file(config_file)
  content = File.read(config_file)
  erb = ERB.new(content)
  settings = YAML.load(erb.result)
  instance << settings
end

.to_sObject



77
78
79
# File 'lib/staticd/config.rb', line 77

def self.to_s
  instance.to_s
end

Instance Method Details

#<<(settings) ⇒ Object



85
86
87
88
# File 'lib/staticd/config.rb', line 85

def <<(settings)
  settings = hash_symbolize_keys(settings)
  mutex.synchronize { @settings.merge!(settings) }
end

#[](setting) ⇒ Object



90
91
92
# File 'lib/staticd/config.rb', line 90

def [](setting)
  mutex.synchronize { @settings.key?(setting) ? @settings[setting] : nil }
end

#key?(setting_name) ⇒ Boolean

Returns:

  • (Boolean)


94
95
96
# File 'lib/staticd/config.rb', line 94

def key?(setting_name)
  mutex.synchronize { @settings.key?(setting_name) }
end

#to_sObject



98
99
100
# File 'lib/staticd/config.rb', line 98

def to_s
  mutex.synchronize { @settings.to_s }
end