module Kontena::Util
Public Class Methods
included(base)
click to toggle source
# File lib/kontena/util.rb, line 3 def self.included(base) base.extend(ClassMethods) end
stringify_keys(obj)
click to toggle source
# File lib/kontena/util.rb, line 31 def stringify_keys(obj) case obj when Hash obj.map { |k,v| [k.to_s, stringify_keys(v)] }.to_h when Array obj.map { |v| stringify_keys(v) } else obj end end
stringify_keys!(obj)
click to toggle source
# File lib/kontena/util.rb, line 43 def stringify_keys!(obj) case obj when Hash obj.keys.each { |k| obj[k.to_s] = stringify_keys!(obj.delete(k)) } when Array obj.map! { |v| stringify_keys!(v) } else end obj end
symbolize_keys(obj)
click to toggle source
# File lib/kontena/util.rb, line 7 def symbolize_keys(obj) case obj when Hash obj.map { |k,v| [k.to_sym, symbolize_keys(v)] }.to_h when Array obj.map { |v| symbolize_keys(v) } else obj end end
symbolize_keys!(obj)
click to toggle source
# File lib/kontena/util.rb, line 19 def symbolize_keys!(obj) case obj when Hash obj.keys.each { |k| obj[k.to_sym] = symbolize_keys!(obj.delete(k)) } when Array obj.map! { |v| symbolize_keys!(v) } else end obj end
which(cmd)
click to toggle source
@param [String] cmd
# File lib/kontena/util.rb, line 56 def which(cmd) exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : [''] ENV['PATH'].split(File::PATH_SEPARATOR).each do |path| exts.each { |ext| exe = File.join(path, "#{cmd}#{ext}") return exe if File.executable?(exe) && !File.directory?(exe) } end return nil end
Public Instance Methods
longest_string_in_array(array)
click to toggle source
# File lib/kontena/util.rb, line 103 def longest_string_in_array(array) array.max_by(&:length).length end
safe_dig(hash, *keys)
click to toggle source
Compatibility between ruby_dig and Ruby 2.3. Ruby_dig returns nil when trying to dig into a string, Ruby 2.3 dig raises TypeError.
@param [Hash] source_hash @param [*keys] list_of_keys
# File lib/kontena/util.rb, line 73 def safe_dig(hash, *keys) hash.dig(*keys) rescue TypeError nil end
seconds_to_human(seconds)
click to toggle source
# File lib/kontena/util.rb, line 90 def seconds_to_human(seconds) if seconds > 60 * 60 * 24 result = "#{seconds / 60 / 60 / 24} days" elsif seconds > 60 * 60 result = "#{seconds / 60 / 60} hours" elsif seconds > 60 result = "#{seconds / 60} minutes" else result = "#{seconds} seconds" end result.start_with?('1 ') ? result[0..-2] : result end
time_ago(time)
click to toggle source
# File lib/kontena/util.rb, line 79 def time_ago(time) now = Time.now.to_i time = time.kind_of?(Integer) ? time : DateTime.parse(time).to_time.to_i diff = now - time seconds_to_human(diff) + ' ago' end
time_until(seconds)
click to toggle source
# File lib/kontena/util.rb, line 86 def time_until(seconds) 'in ' + seconds_to_human(seconds) end
Private Instance Methods
stringify_keys(obj)
click to toggle source
# File lib/kontena/util.rb, line 31 def stringify_keys(obj) case obj when Hash obj.map { |k,v| [k.to_s, stringify_keys(v)] }.to_h when Array obj.map { |v| stringify_keys(v) } else obj end end
stringify_keys!(obj)
click to toggle source
# File lib/kontena/util.rb, line 43 def stringify_keys!(obj) case obj when Hash obj.keys.each { |k| obj[k.to_s] = stringify_keys!(obj.delete(k)) } when Array obj.map! { |v| stringify_keys!(v) } else end obj end
symbolize_keys(obj)
click to toggle source
# File lib/kontena/util.rb, line 7 def symbolize_keys(obj) case obj when Hash obj.map { |k,v| [k.to_sym, symbolize_keys(v)] }.to_h when Array obj.map { |v| symbolize_keys(v) } else obj end end
symbolize_keys!(obj)
click to toggle source
# File lib/kontena/util.rb, line 19 def symbolize_keys!(obj) case obj when Hash obj.keys.each { |k| obj[k.to_sym] = symbolize_keys!(obj.delete(k)) } when Array obj.map! { |v| symbolize_keys!(v) } else end obj end
which(cmd)
click to toggle source
@param [String] cmd
# File lib/kontena/util.rb, line 56 def which(cmd) exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : [''] ENV['PATH'].split(File::PATH_SEPARATOR).each do |path| exts.each { |ext| exe = File.join(path, "#{cmd}#{ext}") return exe if File.executable?(exe) && !File.directory?(exe) } end return nil end