Module: Sensu::Utilities
Instance Method Summary collapse
- #deep_diff(hash_one, hash_two) ⇒ Object
- #deep_merge(hash_one, hash_two) ⇒ Object
- #indifferent_hash ⇒ Object
- #redact_sensitive(hash, keys = nil) ⇒ Object
- #retry_until_true(wait = 0.5, &block) ⇒ Object
- #testing? ⇒ Boolean
- #with_indifferent_access(hash) ⇒ Object
Instance Method Details
#deep_diff(hash_one, hash_two) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/sensu/utilities.rb', line 47 def deep_diff(hash_one, hash_two) keys = hash_one.keys.concat(hash_two.keys).uniq keys.inject(Hash.new) do |diff, key| unless hash_one[key] == hash_two[key] if hash_one[key].is_a?(Hash) && hash_two[key].is_a?(Hash) diff[key] = deep_diff(hash_one[key], hash_two[key]) else diff[key] = [hash_one[key], hash_two[key]] end end diff end end |
#deep_merge(hash_one, hash_two) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/sensu/utilities.rb', line 32 def deep_merge(hash_one, hash_two) merged = hash_one.dup hash_two.each do |key, value| merged[key] = case when hash_one[key].is_a?(Hash) && value.is_a?(Hash) deep_merge(hash_one[key], value) when hash_one[key].is_a?(Array) && value.is_a?(Array) hash_one[key].concat(value).uniq else value end end merged end |
#indifferent_hash ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/sensu/utilities.rb', line 15 def indifferent_hash Hash.new do |hash, key| if key.is_a?(String) hash[key.to_sym] end end end |
#redact_sensitive(hash, keys = nil) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/sensu/utilities.rb', line 61 def redact_sensitive(hash, keys=nil) keys ||= %w[ password passwd pass api_key api_token access_key secret_key private_key secret ] hash = hash.dup hash.each do |key, value| if keys.include?(key.to_s) hash[key] = "REDACTED" elsif value.is_a?(Hash) hash[key] = redact_sensitive(value, keys) elsif value.is_a?(Array) hash[key] = value.map do |item| item.is_a?(Hash) ? redact_sensitive(item, keys) : item end end end hash end |
#retry_until_true(wait = 0.5, &block) ⇒ Object
7 8 9 10 11 12 13 |
# File 'lib/sensu/utilities.rb', line 7 def retry_until_true(wait=0.5, &block) EM::Timer.new(wait) do unless block.call retry_until_true(wait, &block) end end end |
#testing? ⇒ Boolean
3 4 5 |
# File 'lib/sensu/utilities.rb', line 3 def testing? File.basename($0) == 'rspec' end |
#with_indifferent_access(hash) ⇒ Object
23 24 25 26 27 28 29 30 |
# File 'lib/sensu/utilities.rb', line 23 def with_indifferent_access(hash) hash = indifferent_hash.merge(hash) hash.each do |key, value| if value.is_a?(Hash) hash[key] = with_indifferent_access(value) end end end |