tp_common 0.2.1 → 0.2.2
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/.gitignore +1 -0
- data/gemfiles/rails_4.gemfile.lock +2 -2
- data/gemfiles/rails_5.gemfile.lock +2 -2
- data/lib/tp_common/assets_loader.rb +92 -0
- data/lib/tp_common/version.rb +1 -1
- data/lib/tp_common.rb +1 -0
- metadata +4 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 9e220ac3f4edbe18ef730546eae1101798b4077c9a99919f56914efdc5791632
         | 
| 4 | 
            +
              data.tar.gz: 1946d2c05f1c3bb9f59321f65ce8d2e6c5e9c128b7400f74082cfcf38ede5c74
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d9fbc13d47a5660448dd162a0f8835cadc05b985876b7a8ee0174c27fb987042a8a20d596e255cb158235d885c0b4e35f5a8a1336a1ca1a1c1db90aee094564d
         | 
| 7 | 
            +
              data.tar.gz: 600a8864bcd467f1a604d5c4852829536ad35cffe5675900ac357a7981e29fb6265e5fdcb74b9fa56cb4cc89dab44999d4215e231a4a08660b6ad505a36463f6
         | 
    
        data/.gitignore
    CHANGED
    
    
| @@ -0,0 +1,92 @@ | |
| 1 | 
            +
            module TpCommon
         | 
| 2 | 
            +
              class AssetsLoader
         | 
| 3 | 
            +
                class AssetNotFound < ::StandardError; end
         | 
| 4 | 
            +
                class ManifestNotFound < ::StandardError; end
         | 
| 5 | 
            +
                class ManifestFileBroken < ::StandardError; end
         | 
| 6 | 
            +
                class PackageIsNotLoaded < ::StandardError; end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                LoaderConfiguration = Struct.new(:autoload, :asset_root_path, :version)
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                #
         | 
| 11 | 
            +
                # Clear all config + loaded package
         | 
| 12 | 
            +
                # Use for test only, but feel free to use in app if need
         | 
| 13 | 
            +
                def self.clear!
         | 
| 14 | 
            +
                  @config = LoaderConfiguration.new(false, '/public', :latest)
         | 
| 15 | 
            +
                  @packages = {}
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                def self.configure
         | 
| 19 | 
            +
                  yield(config)
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                def self.build(package_name, external_manifest_file)
         | 
| 23 | 
            +
                  # TODO: Implement
         | 
| 24 | 
            +
                  # Skip if "/public/#{package_name}" exists
         | 
| 25 | 
            +
                  # Download manifest.json from #{external_manifest_file}?version=#{@config.version}
         | 
| 26 | 
            +
                  #                        to "/public/#{package_name}/assets/manifest.json"
         | 
| 27 | 
            +
                  # Validate "/public/#{package_name}/assets/manifest.json"
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                def self.load(package_name)
         | 
| 31 | 
            +
                  package_name = package_name.to_sym
         | 
| 32 | 
            +
                  packages[package_name] = new(package_name)
         | 
| 33 | 
            +
                  packages
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                def self.[](package_name)
         | 
| 37 | 
            +
                  package_name = package_name.to_sym
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  unless packages.key?(package_name)
         | 
| 40 | 
            +
                    if @config.autoload
         | 
| 41 | 
            +
                      load(package_name)
         | 
| 42 | 
            +
                    else
         | 
| 43 | 
            +
                      raise PackageIsNotLoaded.new("Package #{package_name} is not loaded yet.")
         | 
| 44 | 
            +
                    end
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  packages[package_name]
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                def self.asset_root_path
         | 
| 51 | 
            +
                  @config.asset_root_path
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                def self.packages
         | 
| 55 | 
            +
                  @packages ||= {}
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                def self.new_config
         | 
| 59 | 
            +
                  LoaderConfiguration.new(false, '/public', :latest)
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                def self.config
         | 
| 63 | 
            +
                  @config ||= new_config
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                private_class_method :packages, :new_config, :config
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                def initialize(package_name)
         | 
| 69 | 
            +
                  @package_name = package_name.to_sym
         | 
| 70 | 
            +
                  file_path = File.join(self.class.asset_root_path, @package_name.to_s, 'assets', 'manifest.json')
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                  @manifest = begin
         | 
| 73 | 
            +
                                JSON.parse(File.read(file_path))
         | 
| 74 | 
            +
                              rescue SystemCallError
         | 
| 75 | 
            +
                                raise ManifestNotFound.new(
         | 
| 76 | 
            +
                                  "Unable to load manifest file for package #{@package_name} at: #{file_path}"
         | 
| 77 | 
            +
                                )
         | 
| 78 | 
            +
                              rescue StandardError
         | 
| 79 | 
            +
                                raise ManifestFileBroken.new("Manifest file for package #{@package_name} is unable to load")
         | 
| 80 | 
            +
                              end
         | 
| 81 | 
            +
                  return true
         | 
| 82 | 
            +
                end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                def [](asset_name)
         | 
| 85 | 
            +
                  @manifest[asset_name].tap do |asset|
         | 
| 86 | 
            +
                    if asset.nil?
         | 
| 87 | 
            +
                      raise AssetNotFound.new("Asset #{@package_name}/#{asset_name} is not found.")
         | 
| 88 | 
            +
                    end
         | 
| 89 | 
            +
                  end
         | 
| 90 | 
            +
                end
         | 
| 91 | 
            +
              end
         | 
| 92 | 
            +
            end
         | 
    
        data/lib/tp_common/version.rb
    CHANGED
    
    
    
        data/lib/tp_common.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: tp_common
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - TINYpulse Devops
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2018- | 
| 11 | 
            +
            date: 2018-10-15 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -166,6 +166,7 @@ files: | |
| 166 166 | 
             
            - gemfiles/rails_5.gemfile
         | 
| 167 167 | 
             
            - gemfiles/rails_5.gemfile.lock
         | 
| 168 168 | 
             
            - lib/tp_common.rb
         | 
| 169 | 
            +
            - lib/tp_common/assets_loader.rb
         | 
| 169 170 | 
             
            - lib/tp_common/railtie.rb
         | 
| 170 171 | 
             
            - lib/tp_common/timezones.rb
         | 
| 171 172 | 
             
            - lib/tp_common/timezones/config.rb
         | 
| @@ -194,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 194 195 | 
             
                  version: '0'
         | 
| 195 196 | 
             
            requirements: []
         | 
| 196 197 | 
             
            rubyforge_project: 
         | 
| 197 | 
            -
            rubygems_version: 2.7. | 
| 198 | 
            +
            rubygems_version: 2.7.7
         | 
| 198 199 | 
             
            signing_key: 
         | 
| 199 200 | 
             
            specification_version: 4
         | 
| 200 201 | 
             
            summary: Common libraries used for TINYpulse apps
         |