derived_images 0.3.2 → 0.4.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/lib/derived_images/cache.rb +1 -1
- data/lib/derived_images/manifest_entry.rb +16 -5
- data/lib/derived_images/version.rb +1 -1
- data/lib/derived_images/worker.rb +4 -2
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: baf29fb4eb242552ac2986bdc0edafcbcea4e002d392c9c496d3de8722cbf31b
         | 
| 4 | 
            +
              data.tar.gz: 2bc1784b75cad336ef7e878b2ab885f5f0df3edb278296757d644cf6d80ffa8a
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a876902f03b4331d000aab0bb8e3d608e57b17edc40f68a920ec88aa452aa7dbce5e221496e03bc4e5723e6e57cdffa465adf457c832a5287c2b7d4dccfc8075
         | 
| 7 | 
            +
              data.tar.gz: 9a24bb5f27aac0519af396408b3d6256e1c66afa708a125881cad8018b3f86f034b1974eb24c0ed132c617c66b0d09b11f3901b620341ace4be44aa8404f0359
         | 
    
        data/lib/derived_images/cache.rb
    CHANGED
    
    
| @@ -8,10 +8,7 @@ module DerivedImages | |
| 8 8 | 
             
                def initialize(source, target)
         | 
| 9 9 | 
             
                  @source = source
         | 
| 10 10 | 
             
                  @target = target
         | 
| 11 | 
            -
                   | 
| 12 | 
            -
                  pipeline = PROCESSORS.fetch(DerivedImages.config.processor).dup
         | 
| 13 | 
            -
                  pipeline = pipeline.convert(target_ext) if target_ext.present?
         | 
| 14 | 
            -
                  @pipeline = pipeline
         | 
| 11 | 
            +
                  @pipeline = default_pipeline(File.extname(target).delete_prefix('.'))
         | 
| 15 12 | 
             
                end
         | 
| 16 13 |  | 
| 17 14 | 
             
                def ==(other)
         | 
| @@ -37,7 +34,9 @@ module DerivedImages | |
| 37 34 | 
             
                def cache_key
         | 
| 38 35 | 
             
                  return nil unless source_present?
         | 
| 39 36 |  | 
| 40 | 
            -
                  Digest::SHA256.hexdigest({  | 
| 37 | 
            +
                  Digest::SHA256.hexdigest({ version: DerivedImages::VERSION,
         | 
| 38 | 
            +
                                             source: source_digest,
         | 
| 39 | 
            +
                                             pipeline: options_hash }.to_json)
         | 
| 41 40 | 
             
                end
         | 
| 42 41 |  | 
| 43 42 | 
             
                def self.empty_pipeline
         | 
| @@ -45,6 +44,7 @@ module DerivedImages | |
| 45 44 | 
             
                end
         | 
| 46 45 |  | 
| 47 46 | 
             
                PROCESSORS = { mini_magick: ImageProcessing::MiniMagick, vips: ImageProcessing::Vips }.freeze
         | 
| 47 | 
            +
                COMPRESSION_OVERRIDES = { 'avif' => 'av1', 'heic' => 'hevc' }.freeze
         | 
| 48 48 |  | 
| 49 49 | 
             
                def target_digest
         | 
| 50 50 | 
             
                  Digest::SHA256.file(target_path).hexdigest
         | 
| @@ -60,6 +60,17 @@ module DerivedImages | |
| 60 60 | 
             
                  Digest::SHA256.file(source_path).hexdigest
         | 
| 61 61 | 
             
                end
         | 
| 62 62 |  | 
| 63 | 
            +
                def default_pipeline(target_ext)
         | 
| 64 | 
            +
                  pipeline = PROCESSORS.fetch(DerivedImages.config.processor).dup
         | 
| 65 | 
            +
                  pipeline = pipeline.convert(target_ext) if target_ext.present?
         | 
| 66 | 
            +
                  vips = pipeline.options[:processor] == ImageProcessing::Vips::Processor
         | 
| 67 | 
            +
                  if vips && !Vips.at_least_libvips?(8, 12) && COMPRESSION_OVERRIDES.key?(target_ext)
         | 
| 68 | 
            +
                    # https://github.com/libvips/libvips/commit/47383b5bfc136f7870c319a1edce4848e177425b
         | 
| 69 | 
            +
                    pipeline = pipeline.saver(compression: COMPRESSION_OVERRIDES.fetch(target_ext))
         | 
| 70 | 
            +
                  end
         | 
| 71 | 
            +
                  pipeline
         | 
| 72 | 
            +
                end
         | 
| 73 | 
            +
             | 
| 63 74 | 
             
                protected
         | 
| 64 75 |  | 
| 65 76 | 
             
                def options_hash
         | 
| @@ -45,11 +45,13 @@ module DerivedImages | |
| 45 45 | 
             
                end
         | 
| 46 46 |  | 
| 47 47 | 
             
                def generate(entry, cache_key)
         | 
| 48 | 
            +
                  target_path = entry.target_path
         | 
| 48 49 | 
             
                  time = Benchmark.realtime do
         | 
| 49 50 | 
             
                    tempfile = entry.pipeline.loader(fail: true).call(entry.source_path.to_s)
         | 
| 50 | 
            -
                     | 
| 51 | 
            +
                    File.chmod(0o644, tempfile.path)
         | 
| 52 | 
            +
                    FileUtils.mv(tempfile.path, target_path)
         | 
| 51 53 | 
             
                  end
         | 
| 52 | 
            -
                  cache.store(cache_key,  | 
| 54 | 
            +
                  cache.store(cache_key, target_path)
         | 
| 53 55 | 
             
                  DerivedImages.config.logger.info("Created #{entry.target} from #{entry.source} in #{time.round(3)}s")
         | 
| 54 56 | 
             
                end
         | 
| 55 57 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: derived_images
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Michael Kitson
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2023-05- | 
| 11 | 
            +
            date: 2023-05-28 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: image_processing
         |