Class: ProxyTester::Config
- Inherits:
-
Object
- Object
- ProxyTester::Config
- Defined in:
- lib/proxy_tester/config.rb
Class Attribute Summary collapse
-
.options ⇒ Object
readonly
Returns the value of attribute options.
Class Method Summary collapse
- .option(option, default_value) ⇒ Object
- .option_reader(option, default_value) ⇒ Object
- .option_writer(option) ⇒ Object
Instance Method Summary collapse
- #allowed_config_file_paths ⇒ Object
-
#initialize(file = available_config_file, config_engine = Psych) ⇒ Config
constructor
A new instance of Config.
- #lock ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(file = available_config_file, config_engine = Psych) ⇒ Config
Returns a new instance of Config.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/proxy_tester/config.rb', line 45 def initialize(file = available_config_file, config_engine = Psych) config_mutex = Mutex.new config_mutex.synchronize do yaml = Psych.load_file(file) if yaml.respond_to? :[] @config = yaml.symbolize_keys else @config = {} end end rescue StandardError => e fail Exceptions::ConfigFileNotReadable, JSON.dump(message: e., file: file) end |
Class Attribute Details
.options ⇒ Object (readonly)
Returns the value of attribute options.
15 16 17 |
# File 'lib/proxy_tester/config.rb', line 15 def end |
Class Method Details
.option(option, default_value) ⇒ Object
37 38 39 40 |
# File 'lib/proxy_tester/config.rb', line 37 def option(option, default_value) option_reader(option, default_value) option_writer(option) end |
.option_reader(option, default_value) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/proxy_tester/config.rb', line 17 def option_reader(option, default_value) define_method option.to_sym do config.fetch(option.to_sym, default_value) end << option end |
.option_writer(option) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/proxy_tester/config.rb', line 25 def option_writer(option) define_method "#{option}=".to_sym do |value| begin config[option.to_sym] = value rescue RuntimeError raise Exceptions::ConfigLocked, JSON.dump(option: option) end end << option end |
Instance Method Details
#allowed_config_file_paths ⇒ Object
76 77 78 79 80 81 82 83 |
# File 'lib/proxy_tester/config.rb', line 76 def allowed_config_file_paths [ ::File.(::File.join(ENV['HOME'], '.config', 'proxy_tester', 'config.yaml')), ::File.(::File.join(ENV['HOME'], '.proxy_tester', 'config.yaml')), ::File.(::File.join('/etc', 'proxy_tester', 'config.yaml')), ::File.('../../../files/config.yaml', __FILE__), ] end |
#lock ⇒ Object
60 61 62 |
# File 'lib/proxy_tester/config.rb', line 60 def lock config.freeze end |
#to_s ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/proxy_tester/config.rb', line 64 def to_s result = [] result << sprintf("%20s | %s", 'option', 'value') result << sprintf("%s + %s", '-' * 20, '-' * 80) Config..each do |o| result << sprintf("%20s | %s", o, Array(public_send(o)).join(', ')) end result.join("\n") end |