Class: ServerSettings

Inherits:
Object
  • 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

#initializeServerSettings

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

#rolesObject

Returns the value of attribute roles.



14
15
16
# File 'lib/server_settings.rb', line 14

def roles
  @roles
end

Class Method Details

.destroyObject



96
97
98
99
# File 'lib/server_settings.rb', line 96

def destroy
  @servers_config = nil
  @loaded_files = nil
end

.each_roleObject



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

.reloadObject



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

.rolesObject



78
79
80
# File 'lib/server_settings.rb', line 78

def roles
  instance.roles
end

Instance Method Details

#<<(role) ⇒ Object

Raises:



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

#eachObject



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

Returns:

  • (Boolean)


34
35
36
# File 'lib/server_settings.rb', line 34

def has_key?(role)
  @roles.has_key?(role)
end