skn_utils 5.2.0 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +11 -4
- data/docs/.gitkeep +1 -0
- data/lib/skn_failure.rb +8 -5
- data/lib/skn_success.rb +8 -5
- data/lib/skn_utils.rb +23 -3
- data/lib/skn_utils/version.rb +1 -1
- data/skn_utils.gemspec +0 -1
- data/spec/lib/skn_utils/as_human_size_spec.rb +35 -0
- data/spec/lib/skn_utils/catch_exceptions_spec.rb +27 -0
- metadata +7 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 5b812d7904cab21c79e37afec4bf5c9eb2f67336
         | 
| 4 | 
            +
              data.tar.gz: 966367ddcb978a3bb2eb6eeea71a89c93b3ee347
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 595bf74de49521fe61e6ec10dee7f1c56b97798096ff540e03e1bdc92e92c82e7b805018150bfb0495bca45b74c1c76ac6c9bc38aee19b774a8a081f2b6aa327
         | 
| 7 | 
            +
              data.tar.gz: 1b57076cadc213712426727bcaac68a546f99f0cab187b15618b8799d106b8019d056742aa87ef092af9f271e7cf6a704bc43990ab6dd7d84fcdeb7ea7bd06d2
         | 
    
        data/README.md
    CHANGED
    
    | @@ -30,8 +30,8 @@ Ruby's Hash object is already extremely flexible, even more so with the addition | |
| 30 30 | 
             
            1. Command registries used to dispatch command requests to proper command handler. see example app [SknBase](https://github.com/skoona/skn_base/blob/master/strategy/services/content/command_handler.rb)
         | 
| 31 31 | 
             
            ```ruby
         | 
| 32 32 | 
             
                SknSettings.registry = {
         | 
| 33 | 
            -
                                         | 
| 34 | 
            -
                                         | 
| 33 | 
            +
                                        Commands::RetrieveAvailableResources  => method(:resources_metadata_service),
         | 
| 34 | 
            +
                                        Commands::RetrieveResourceContent  => method(:resource_content_service)
         | 
| 35 35 | 
             
                                       }
         | 
| 36 36 | 
             
                ...
         | 
| 37 37 | 
             
                SknSettings.registry[ cmd.class ].call( cmd )
         | 
| @@ -60,6 +60,12 @@ There are many more use cases for Ruby's Hash that this gem just makes easier to | |
| 60 60 |  | 
| 61 61 |  | 
| 62 62 | 
             
            ## History
         | 
| 63 | 
            +
                11/09/2018 V5.3.0
         | 
| 64 | 
            +
                Added two utils to SknUtils class: 
         | 
| 65 | 
            +
                    #catch_exceptions(&blk)  #=> catch all exceptions and retry block x times 
         | 
| 66 | 
            +
                    #as_human_size(12345)    #=> 12 KB
         | 
| 67 | 
            +
                - See related RSpecs
         | 
| 68 | 
            +
             | 
| 63 69 | 
             
                10/17/2018 V5.1.3
         | 
| 64 70 | 
             
                Enhanced SknUtils::Configurable to include a #registry method/value at its root, like Clas.registry or Class.root
         | 
| 65 71 | 
             
                - Right now these are Class methods only, will update them to survive #new later.
         | 
| @@ -153,8 +159,9 @@ There are many more use cases for Ruby's Hash that this gem just makes easier to | |
| 153 159 |  | 
| 154 160 | 
             
                SknContainer/SknRegistry         # Basic Key/Value container which #registers and #resolves procs, classes, and/or object
         | 
| 155 161 |  | 
| 156 | 
            -
                SknSuccess                       # Three attribute value containers for return codes   -- # | 
| 157 | 
            -
             | 
| 162 | 
            +
                SknSuccess                       # Three attribute value containers for return codes   -- #value, #message, #success
         | 
| 163 | 
            +
                                                   - Extra #payload method returns value as NestResult if value is_a Hash 
         | 
| 164 | 
            +
                SknFailure                       # Three attribute value containers for return codes   -- #value, #message, #success
         | 
| 158 165 |  | 
| 159 166 |  | 
| 160 167 | 
             
            ## Public Methods: SknUtils::Configurable module
         | 
    
        data/docs/.gitkeep
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            keep
         | 
    
        data/lib/skn_failure.rb
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            # ##
         | 
| 2 2 | 
             
            # Bad Result
         | 
| 3 3 | 
             
            #
         | 
| 4 | 
            -
            # Syntax: SknFailure.call( | 
| 4 | 
            +
            # Syntax: SknFailure.call(value, message=nil, bool_code=false)
         | 
| 5 5 | 
             
            #
         | 
| 6 6 |  | 
| 7 7 | 
             
            class SknFailure
         | 
| @@ -16,12 +16,15 @@ class SknFailure | |
| 16 16 | 
             
                @value = val || "Failure"
         | 
| 17 17 | 
             
                @message = msg || ''
         | 
| 18 18 | 
             
                @success = rc.nil? ? false : rc
         | 
| 19 | 
            -
                @_payload = val.kind_of?(Hash) ? SknUtils::DottedHash.new(val) : nil
         | 
| 20 | 
            -
                # puts "#{self.class.name} => val:#{val}, rc:#{rc}, msg:#{msg}, args:#{args}"
         | 
| 21 | 
            -
                # puts "#{self.class.name} => @val:#{@value}, @rc:#{@success}, @msg:#{@message}"
         | 
| 22 19 | 
             
              end
         | 
| 23 20 |  | 
| 24 21 | 
             
              def payload
         | 
| 25 | 
            -
                @_payload | 
| 22 | 
            +
                if defined?(@_payload)
         | 
| 23 | 
            +
                  @_payload
         | 
| 24 | 
            +
                elsif value.kind_of?(Hash)
         | 
| 25 | 
            +
                  @_payload = SknUtils::DottedHash.new(value)
         | 
| 26 | 
            +
                else
         | 
| 27 | 
            +
                  value
         | 
| 28 | 
            +
                end
         | 
| 26 29 | 
             
              end
         | 
| 27 30 | 
             
            end
         | 
    
        data/lib/skn_success.rb
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            # ##
         | 
| 2 2 | 
             
            # Good Result
         | 
| 3 3 | 
             
            #
         | 
| 4 | 
            -
            # Syntax: SknSuccess.call( | 
| 4 | 
            +
            # Syntax: SknSuccess.call(value, message=nil, bool_code=true)
         | 
| 5 5 | 
             
            #
         | 
| 6 6 |  | 
| 7 7 | 
             
            class SknSuccess
         | 
| @@ -16,12 +16,15 @@ class SknSuccess | |
| 16 16 | 
             
                @value = val || "Success"
         | 
| 17 17 | 
             
                @message = msg || ''
         | 
| 18 18 | 
             
                @success = rc.nil? ? true : rc
         | 
| 19 | 
            -
                @_payload = val.kind_of?(Hash) ? SknUtils::DottedHash.new(val) : nil
         | 
| 20 | 
            -
                # puts "#{self.class.name} => val:#{val}, rc:#{rc}, msg:#{msg}, args:#{args}"
         | 
| 21 | 
            -
                # puts "#{self.class.name} => @val:#{@value}, @rc:#{@success}, @msg:#{@message}"
         | 
| 22 19 | 
             
              end
         | 
| 23 20 |  | 
| 24 21 | 
             
              def payload
         | 
| 25 | 
            -
                @_payload | 
| 22 | 
            +
                if defined?(@_payload)
         | 
| 23 | 
            +
                  @_payload
         | 
| 24 | 
            +
                elsif value.kind_of?(Hash)
         | 
| 25 | 
            +
                  @_payload = SknUtils::DottedHash.new(value.to_h)
         | 
| 26 | 
            +
                else
         | 
| 27 | 
            +
                  value
         | 
| 28 | 
            +
                end
         | 
| 26 29 | 
             
              end
         | 
| 27 30 | 
             
            end
         | 
    
        data/lib/skn_utils.rb
    CHANGED
    
    | @@ -6,7 +6,6 @@ require 'erb' | |
| 6 6 | 
             
            require 'date'
         | 
| 7 7 | 
             
            require 'time'
         | 
| 8 8 | 
             
            require 'concurrent'
         | 
| 9 | 
            -
            require 'colorize'
         | 
| 10 9 | 
             
            unless defined?(Rails)
         | 
| 11 10 | 
             
              begin
         | 
| 12 11 | 
             
                require 'deep_merge'
         | 
| @@ -38,6 +37,7 @@ module SknUtils | |
| 38 37 |  | 
| 39 38 | 
             
              # Random Utils
         | 
| 40 39 | 
             
              # Retries block up to :retries times with a :pause_between, and returns Success/Failure object
         | 
| 40 | 
            +
              # -- return SknSuccess | SknFailure response object
         | 
| 41 41 | 
             
              #
         | 
| 42 42 | 
             
              def self.catch_exceptions(retries=3, pause_between=3, &block)
         | 
| 43 43 | 
             
                retry_count ||= 1
         | 
| @@ -46,8 +46,8 @@ module SknUtils | |
| 46 46 |  | 
| 47 47 | 
             
                  SknSuccess.( yield )
         | 
| 48 48 |  | 
| 49 | 
            -
                rescue StandardError => error
         | 
| 50 | 
            -
                   | 
| 49 | 
            +
                rescue StandardError, ScriptError => error
         | 
| 50 | 
            +
                  puts "#{retry_count} - #{error.class.name}:#{error.message}"
         | 
| 51 51 | 
             
                  if retry_count <= attempts
         | 
| 52 52 | 
             
                    retry_count+= 1
         | 
| 53 53 | 
             
                    sleep(pause_between)
         | 
| @@ -58,4 +58,24 @@ module SknUtils | |
| 58 58 | 
             
                end
         | 
| 59 59 | 
             
              end # end method
         | 
| 60 60 |  | 
| 61 | 
            +
             | 
| 62 | 
            +
              # ##
         | 
| 63 | 
            +
              # SknUtils.as_human_size(12345) #=> 12 KB
         | 
| 64 | 
            +
              #
         | 
| 65 | 
            +
              def self.as_human_size(number)
         | 
| 66 | 
            +
                units = %W(Bytes KB MB GB TB PB EB)
         | 
| 67 | 
            +
                num = number.to_f
         | 
| 68 | 
            +
                if number < 1001
         | 
| 69 | 
            +
                  num = number
         | 
| 70 | 
            +
                  exp = 0
         | 
| 71 | 
            +
                else
         | 
| 72 | 
            +
                  max_exp  = units.size - 1
         | 
| 73 | 
            +
                  exp = ( Math.log( num ) / Math.log( 1024 ) ).round
         | 
| 74 | 
            +
                  exp = max_exp  if exp > max_exp
         | 
| 75 | 
            +
                  num /= 1024 ** exp
         | 
| 76 | 
            +
                end
         | 
| 77 | 
            +
                ((num > 9 || num.modulo(1) < 0.1) ? '%d %s' : '%.1f %s') % [num, units[exp]]
         | 
| 78 | 
            +
              end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
             | 
| 61 81 | 
             
            end
         | 
    
        data/lib/skn_utils/version.rb
    CHANGED
    
    
    
        data/skn_utils.gemspec
    CHANGED
    
    | @@ -33,7 +33,6 @@ EOF | |
| 33 33 | 
             
              spec.add_runtime_dependency 'deep_merge', '~> 1'
         | 
| 34 34 | 
             
              spec.add_runtime_dependency 'concurrent-ruby', '~> 1'
         | 
| 35 35 | 
             
              spec.add_runtime_dependency 'thor', '~> 0'
         | 
| 36 | 
            -
              spec.add_runtime_dependency  'colorize', '~> 0'
         | 
| 37 36 |  | 
| 38 37 | 
             
              spec.add_development_dependency "bundler",   "~> 1"
         | 
| 39 38 | 
             
              spec.add_development_dependency "rake",      "~> 10"
         | 
| @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            ##
         | 
| 2 | 
            +
            # spec/lib/skn_utils/as_human_size_spec.rb
         | 
| 3 | 
            +
            #
         | 
| 4 | 
            +
             | 
| 5 | 
            +
             | 
| 6 | 
            +
            describe SknUtils, 'Number to Human Readable value' do
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              context "#as_human_size" do
         | 
| 9 | 
            +
                it '#as_human_size(123)              123 Bytes' do
         | 
| 10 | 
            +
                  expect(described_class.as_human_size(123)).to eq "123 Bytes"
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
                it '#as_human_size(358400)           0.3 MB' do
         | 
| 13 | 
            +
                  expect(described_class.as_human_size(358400)).to eq "0.3 MB"
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
                it '#as_human_size(1234)             1.2 KB' do
         | 
| 16 | 
            +
                  expect(described_class.as_human_size(1234)).to eq "1.2 KB"
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
                it '#as_human_size(12345)             12 KB' do
         | 
| 19 | 
            +
                  expect(described_class.as_human_size(12345)).to eq "12 KB"
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
                it '#as_human_size(1234567890)       1.1 GB' do
         | 
| 22 | 
            +
                  expect(described_class.as_human_size(1234567890)).to eq "1.1 GB"
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
                it '#as_human_size(1234567890123)    1.1 TB' do
         | 
| 25 | 
            +
                  expect(described_class.as_human_size(1234567890123)).to eq "1.1 TB"
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
                it '#as_human_size(1234567)          1.2 MB' do
         | 
| 28 | 
            +
                  expect(described_class.as_human_size(1234567)).to eq "1.2 MB"
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
                it '#as_human_size(483989)           0.5 MB' do
         | 
| 31 | 
            +
                  expect(described_class.as_human_size(483989 )).to eq "0.5 MB"
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            end
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            ##
         | 
| 2 | 
            +
            # spec/lib/skn_utils/catch_exceptions_spec.rb
         | 
| 3 | 
            +
            #
         | 
| 4 | 
            +
             | 
| 5 | 
            +
             | 
| 6 | 
            +
            describe SknUtils, 'Catch exceptions and retry block. ' do
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              context "#catch_exceptions" do
         | 
| 9 | 
            +
                it '#catch_exceptions -- good block ' do
         | 
| 10 | 
            +
                  expect(
         | 
| 11 | 
            +
                      described_class.catch_exceptions do
         | 
| 12 | 
            +
                        "good"
         | 
| 13 | 
            +
                      end.value
         | 
| 14 | 
            +
                  ).to eq "good"
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                it '#catch_exceptions -- exception block ' do
         | 
| 18 | 
            +
                  expect(
         | 
| 19 | 
            +
                      described_class.catch_exceptions do
         | 
| 20 | 
            +
                        raise NotImplementedError, "Simulate Failures"
         | 
| 21 | 
            +
                      end.value
         | 
| 22 | 
            +
                  ).to include "Simulate Failures"
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: skn_utils
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 5. | 
| 4 | 
            +
              version: 5.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - James Scott Jr
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2018-10 | 
| 11 | 
            +
            date: 2018-11-10 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: deep_merge
         | 
| @@ -52,20 +52,6 @@ dependencies: | |
| 52 52 | 
             
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '0'
         | 
| 55 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name: colorize
         | 
| 57 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            -
                requirements:
         | 
| 59 | 
            -
                - - "~>"
         | 
| 60 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: '0'
         | 
| 62 | 
            -
              type: :runtime
         | 
| 63 | 
            -
              prerelease: false
         | 
| 64 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            -
                requirements:
         | 
| 66 | 
            -
                - - "~>"
         | 
| 67 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: '0'
         | 
| 69 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 56 | 
             
              name: bundler
         | 
| 71 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -178,6 +164,7 @@ files: | |
| 178 164 | 
             
            - bin/configs/settings/test.yml
         | 
| 179 165 | 
             
            - bin/console
         | 
| 180 166 | 
             
            - bin/install
         | 
| 167 | 
            +
            - docs/.gitkeep
         | 
| 181 168 | 
             
            - lib/skn_container.rb
         | 
| 182 169 | 
             
            - lib/skn_failure.rb
         | 
| 183 170 | 
             
            - lib/skn_hash.rb
         | 
| @@ -206,6 +193,8 @@ files: | |
| 206 193 | 
             
            - spec/factories/settings/test.local.yml
         | 
| 207 194 | 
             
            - spec/factories/settings/test.yml
         | 
| 208 195 | 
             
            - spec/lib/skn_settings_spec.rb
         | 
| 196 | 
            +
            - spec/lib/skn_utils/as_human_size_spec.rb
         | 
| 197 | 
            +
            - spec/lib/skn_utils/catch_exceptions_spec.rb
         | 
| 209 198 | 
             
            - spec/lib/skn_utils/configurable_spec.rb
         | 
| 210 199 | 
             
            - spec/lib/skn_utils/container_spec.rb
         | 
| 211 200 | 
             
            - spec/lib/skn_utils/nested_result_spec.rb
         | 
| @@ -252,6 +241,8 @@ test_files: | |
| 252 241 | 
             
            - spec/factories/settings/test.local.yml
         | 
| 253 242 | 
             
            - spec/factories/settings/test.yml
         | 
| 254 243 | 
             
            - spec/lib/skn_settings_spec.rb
         | 
| 244 | 
            +
            - spec/lib/skn_utils/as_human_size_spec.rb
         | 
| 245 | 
            +
            - spec/lib/skn_utils/catch_exceptions_spec.rb
         | 
| 255 246 | 
             
            - spec/lib/skn_utils/configurable_spec.rb
         | 
| 256 247 | 
             
            - spec/lib/skn_utils/container_spec.rb
         | 
| 257 248 | 
             
            - spec/lib/skn_utils/nested_result_spec.rb
         |