Class: SettingsHolder

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/settings_tree/settings_holder.rb

Overview

Part of the “rails-settings” gem, this class is designed to store several OpenStruct representing ‘settings’. It can load them from a YAML file, reload them, and accept queries.

This class is usually not used directly but through the ‘settings’ module, offering shortcuts.


Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#environmentObject

Returns the value of attribute environment.



24
25
26
# File 'lib/settings_tree/settings_holder.rb', line 24

def environment
  @environment
end

Instance Method Details

#debug_inspectObject

a convenience function which displays the datas



35
36
37
38
39
40
41
42
# File 'lib/settings_tree/settings_holder.rb', line 35

def debug_inspect
  puts "*** Current settings :"
  #puts @settings_list.inspect
  @settings_list.each do |key, value|
    puts "Settings.#{key}."
    @settings_list[key][:data].debug_inspect(1)
  end
end

#get_settings(name) ⇒ Object

Return this group of settings as an openstruct



70
71
72
73
74
75
76
77
78
# File 'lib/settings_tree/settings_holder.rb', line 70

def get_settings(name)
  #puts name.inspect
  #puts @settings_list.inspect
  if !@settings_list.has_key?(name) then
    raise ArgumentError, "Settings : unknown settings group '#{name.to_s}'"
  else
    return @settings_list[name][:data]
  end
end

#register_settings_file(name, file) ⇒ Object

Register a source file for a group. The group will be created if not already existing.



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/settings_tree/settings_holder.rb', line 46

def register_settings_file(name, file)
  
  group_just_created = false
  
  # create the group if not already here
  unless has_group?(name)
    register_new_group(name) unless has_group?(name)
    group_just_created = true
  end
  
  # add this file as source
  res = false
  begin
    res = register_new_src_file_for_group(name, file)
  rescue Exception => e
    # delete group if just created ? Not for now.
    # proceed with exception
    raise e
  end
  
  return res
end

#reload_allObject



92
93
94
95
96
# File 'lib/settings_tree/settings_holder.rb', line 92

def reload_all
  @settings_list.each do |key, value|
    reload_group(key)
  end
end

#reload_group(name) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/settings_tree/settings_holder.rb', line 98

def reload_group(name)
  
  res = false
  
  if !has_group?(name) then
    raise ArgumentError, "This group doesn't exist !"
  else
    data = Hash.new
    
    @settings_list[name.to_sym][:src].each do |src|
      data.deep_merge!(hash_data_for_src(src))
    end
    
    @settings_list[name.to_sym][:data] = RecursiveOpenStruct.new(data)
    res = true
  end # check parameters
  
  return res
end

#resetObject

a convenience function which reset the settings, forgetting about all the groups, files, etc.



30
31
32
# File 'lib/settings_tree/settings_holder.rb', line 30

def reset
  initialize
end

#set_environment(env) ⇒ Object

Set the environment to be used for conditional settings.



81
82
83
84
85
86
# File 'lib/settings_tree/settings_holder.rb', line 81

def set_environment(env)
  @environment = env
  
  # need to reload all
  reload_all
end