Module: SknUtils

Defined in:
lib/skn_utils/version.rb,
lib/skn_utils.rb,
lib/skn_utils/wrappable.rb,
lib/skn_utils/dotted_hash.rb,
lib/skn_utils/null_object.rb,
lib/skn_utils/result_bean.rb,
lib/skn_utils/configurable.rb,
lib/skn_utils/job_commands.rb,
lib/skn_utils/configuration.rb,
lib/skn_utils/nested_result.rb,
lib/skn_utils/notifier_base.rb,
lib/skn_utils/page_controls.rb,
lib/skn_utils/http_processor.rb,
lib/skn_utils/concurrent_jobs.rb,
lib/skn_utils/core_extensions.rb,
lib/skn_utils/env_string_handler.rb

Overview

File: ./lib/skn_utils/env_string_handler.rb

Wrapping a string in this class gives you a prettier way to test for equality. The value returned by Rails.env is wrapped in a StringInquirer object so instead of calling this:

Rails.env == 'production'
SknSettings.env == 'production'

you can call this:

Rails.env.production?
SknSettings.env.productcion?

Create a EnvStringHandler to support: SknSettings.env.development? Yes, its YAML trick in config/settings.yml

 ...
 env: !ruby/string:SknUtils::EnvStringHandler <%= ENV['RACK_ENV'] %>
root: !ruby/string:SknUtils::EnvStringHandler <%= Dir.pwd %>
 ...

#

Defined Under Namespace

Modules: Configurable, CoreObjectExtensions, Wrappable Classes: AsyncWorker, CommandFORMDelete, CommandFORMPost, CommandJSONGet, CommandJSONPost, CommandJSONPut, ConcurrentJobs, Configuration, DottedHash, EnvStringHandler, HttpProcessor, JobWrapper, NestedResult, NotifierBase, NullObject, PageControls, Result, ResultBean, SyncWorker, Version

Constant Summary collapse

VERSION =
Version.to_s

Class Method Summary collapse

Class Method Details

.as_human_size(number) ⇒ Object

## SknUtils.as_human_size(12345) #=> 12 KB



76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/skn_utils.rb', line 76

def self.as_human_size(number)
  units = %W(Bytes KB MB GB TB PB EB)
  num = number.to_f
  if number < 1001
    num = number
    exp = 0
  else
    max_exp  = units.size - 1
    exp = ( Math.log( num ) / Math.log( 1024 ) ).round
    exp = max_exp  if exp > max_exp
    num /= 1024 ** exp
  end
  ((num > 9 || num.modulo(1) < 0.1) ? '%d %s' : '%.1f %s') % [num, units[exp]]
end

.catch_exceptions(retries = 3, pause_between = 3, &block) ⇒ Object

Random Utils Retries block up to :retries times with a :pause_between, and returns Success/Failure object – return SknSuccess | SknFailure response object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/skn_utils.rb', line 52

def self.catch_exceptions(retries=3, pause_between=3, &block)
  retry_count ||= 1
  attempts = retries
  begin

    res = yield
    [SknFailure, SknFailure].any? {|o| res.kind_of?(o) } ? res : SknSuccess.( res )

  rescue StandardError, ScriptError => error
    $stderr.puts "#{retry_count} - #{error.class.name}:#{error.message}"
    if retry_count <= attempts
      retry_count+= 1
      sleep(pause_between)
      retry
    else
      SknFailure.( "RETRY ATTEMPTS FAILED - #{error.class.name}:#{error.message}", error.backtrace[0..5].to_s )
    end
  end
end

.duration(start_time = nil) ⇒ Object

call without to get start time call with start_time to get duration string



93
94
95
96
# File 'lib/skn_utils.rb', line 93

def self.duration(start_time=nil)
  start_time.nil? ? Process.clock_gettime(Process::CLOCK_MONOTONIC) :
      "%3.3f seconds" % (Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time)
end

.nullable?(value) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/skn_utils/null_object.rb', line 27

def self.nullable?(value)
  value.nil? ? NullObject.new : value
end