Class: ServerSettings
- Inherits:
-
Object
show all
- Defined in:
- lib/server_settings.rb,
lib/server_settings/host.rb,
lib/server_settings/role.rb,
lib/server_settings/tasks.rb,
lib/server_settings/railtie.rb,
lib/server_settings/role_db.rb,
lib/server_settings/version.rb,
lib/server_settings/database.rb,
lib/server_settings/database_config.rb,
lib/server_settings/host_collection.rb
Defined Under Namespace
Modules: Task
Classes: Database, DatabaseConfig, DuplicateRole, Host, HostCollection, Railtie, Role, RoleDB
Constant Summary
collapse
- VERSION =
"0.1.0"
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of ServerSettings.
19
20
21
|
# File 'lib/server_settings.rb', line 19
def initialize
@roles = {}
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
38
39
40
41
42
|
# File 'lib/server_settings.rb', line 38
def method_missing(name, *args, &block)
key = name.to_s
return nil unless has_key? key
@roles[key]
end
|
Instance Attribute Details
#roles ⇒ Object
Returns the value of attribute roles.
14
15
16
|
# File 'lib/server_settings.rb', line 14
def roles
@roles
end
|
Class Method Details
.destroy ⇒ Object
96
97
98
99
|
# File 'lib/server_settings.rb', line 96
def destroy
@servers_config = nil
@loaded_files = nil
end
|
.each_role ⇒ Object
82
83
84
85
86
|
# File 'lib/server_settings.rb', line 82
def each_role
roles.each do |role, config|
yield(role, config.hosts)
end
end
|
.load_config(file) ⇒ Object
46
47
48
49
50
|
# File 'lib/server_settings.rb', line 46
def load_config(file)
@loaded_files ||= {}
load_from_yaml_erb(IO.read(file))
@loaded_files[file] = File.mtime(file)
end
|
.load_config_dir(pattern) ⇒ Object
52
53
54
55
56
|
# File 'lib/server_settings.rb', line 52
def load_config_dir(pattern)
Dir.glob(pattern) do |file|
load_config(file)
end
end
|
.load_from_yaml(yaml) ⇒ Object
58
59
60
61
62
63
|
# File 'lib/server_settings.rb', line 58
def load_from_yaml(yaml)
config = YAML.load(yaml)
config.each do |role, config|
instance << role_klass(config).new(role, config)
end
end
|
.load_from_yaml_erb(yaml, erb_binding: binding) ⇒ Object
65
66
67
68
|
# File 'lib/server_settings.rb', line 65
def load_from_yaml_erb(yaml, erb_binding: binding)
yaml = ERB.new(yaml).result(erb_binding)
load_from_yaml(yaml)
end
|
.reload ⇒ Object
70
71
72
73
74
75
76
|
# File 'lib/server_settings.rb', line 70
def reload
@loaded_files.each do |file, updated_at|
if File.mtime(file) > updated_at
load_config(file)
end
end
end
|
.role_klass(config) ⇒ Object
88
89
90
91
92
93
94
|
# File 'lib/server_settings.rb', line 88
def role_klass(config)
if config.has_key?("hosts")
Role
else
RoleDB
end
end
|
.roles ⇒ Object
78
79
80
|
# File 'lib/server_settings.rb', line 78
def roles
instance.roles
end
|
Instance Method Details
#<<(role) ⇒ Object
23
24
25
26
|
# File 'lib/server_settings.rb', line 23
def << (role)
raise DuplicateRole, "`#{role.name}' already defined" if @roles.has_key?(role.name)
@roles[role.name] = role
end
|
#each ⇒ Object
28
29
30
31
32
|
# File 'lib/server_settings.rb', line 28
def each
@roles.each do |name, role|
yield(name, role)
end
end
|
#has_key?(role) ⇒ Boolean
34
35
36
|
# File 'lib/server_settings.rb', line 34
def has_key?(role)
@roles.has_key?(role)
end
|