next_gen_images 0.1.0 → 1.1.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/Gemfile.lock +24 -21
- data/README.md +38 -1
- data/lib/next_gen_images/version.rb +1 -1
- data/lib/next_gen_images/view_helpers.rb +4 -4
- data/lib/next_gen_images.rb +1 -0
- data/next_gen_images.gemspec +40 -0
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 1d9ba63a5eb1dc12bfbdd8e5604144dff1ed7c93c9643401b9d144847b5ffb01
         | 
| 4 | 
            +
              data.tar.gz: ceada02f709811e4e9cb87c6014e1c6dcd1d8a049ac6e861b19441651e020f49
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 1ff61bf7de48a53620dfce5146f6df612078981c769622601040ca4a2af288cd4d6b1700eac74cb91e5e41297b7886a9331a45ed39d6127f64362ce307c9260a
         | 
| 7 | 
            +
              data.tar.gz: 68645e21ab7e37e1b766f0e914c679732791c6db9474b8bfd82b4609f48b92952e761e2426f5157264b52bac4a50163995eff5340467d782d0ac99f2d2bc5bca
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                next_gen_images ( | 
| 4 | 
            +
                next_gen_images (1.1.0)
         | 
| 5 5 | 
             
                  rails (>= 3.1)
         | 
| 6 6 | 
             
                  webp-ffi (~> 0.3.1)
         | 
| 7 7 |  | 
| @@ -87,13 +87,14 @@ GEM | |
| 87 87 | 
             
                  ssrf_filter (~> 1.0)
         | 
| 88 88 | 
             
                concurrent-ruby (1.1.10)
         | 
| 89 89 | 
             
                crass (1.0.6)
         | 
| 90 | 
            +
                date (3.3.3)
         | 
| 90 91 | 
             
                diff-lcs (1.5.0)
         | 
| 91 | 
            -
                erubi (1. | 
| 92 | 
            +
                erubi (1.12.0)
         | 
| 92 93 | 
             
                ffi (1.15.5)
         | 
| 93 94 | 
             
                ffi-compiler (1.0.1)
         | 
| 94 95 | 
             
                  ffi (>= 1.0.0)
         | 
| 95 96 | 
             
                  rake
         | 
| 96 | 
            -
                globalid (1. | 
| 97 | 
            +
                globalid (1.1.0)
         | 
| 97 98 | 
             
                  activesupport (>= 5.0)
         | 
| 98 99 | 
             
                i18n (1.12.0)
         | 
| 99 100 | 
             
                  concurrent-ruby (~> 1.0)
         | 
| @@ -101,36 +102,38 @@ GEM | |
| 101 102 | 
             
                  mini_magick (>= 4.9.5, < 5)
         | 
| 102 103 | 
             
                  ruby-vips (>= 2.0.17, < 3)
         | 
| 103 104 | 
             
                json (2.6.2)
         | 
| 104 | 
            -
                loofah (2. | 
| 105 | 
            +
                loofah (2.21.3)
         | 
| 105 106 | 
             
                  crass (~> 1.0.2)
         | 
| 106 | 
            -
                  nokogiri (>= 1. | 
| 107 | 
            -
                mail (2. | 
| 107 | 
            +
                  nokogiri (>= 1.12.0)
         | 
| 108 | 
            +
                mail (2.8.1)
         | 
| 108 109 | 
             
                  mini_mime (>= 0.1.1)
         | 
| 110 | 
            +
                  net-imap
         | 
| 111 | 
            +
                  net-pop
         | 
| 112 | 
            +
                  net-smtp
         | 
| 109 113 | 
             
                marcel (1.0.2)
         | 
| 110 114 | 
             
                method_source (1.0.0)
         | 
| 111 115 | 
             
                mini_magick (4.12.0)
         | 
| 112 116 | 
             
                mini_mime (1.1.2)
         | 
| 113 117 | 
             
                minitest (5.16.3)
         | 
| 114 | 
            -
                net-imap (0.3. | 
| 118 | 
            +
                net-imap (0.3.4)
         | 
| 119 | 
            +
                  date
         | 
| 115 120 | 
             
                  net-protocol
         | 
| 116 121 | 
             
                net-pop (0.1.2)
         | 
| 117 122 | 
             
                  net-protocol
         | 
| 118 | 
            -
                net-protocol (0.1 | 
| 123 | 
            +
                net-protocol (0.2.1)
         | 
| 119 124 | 
             
                  timeout
         | 
| 120 | 
            -
                net-smtp (0.3. | 
| 125 | 
            +
                net-smtp (0.3.3)
         | 
| 121 126 | 
             
                  net-protocol
         | 
| 122 | 
            -
                nio4r (2.5. | 
| 123 | 
            -
                nokogiri (1. | 
| 124 | 
            -
                  racc (~> 1.4)
         | 
| 125 | 
            -
                nokogiri (1.13.8-x86_64-linux)
         | 
| 127 | 
            +
                nio4r (2.5.9)
         | 
| 128 | 
            +
                nokogiri (1.15.2-arm64-darwin)
         | 
| 126 129 | 
             
                  racc (~> 1.4)
         | 
| 127 130 | 
             
                parallel (1.22.1)
         | 
| 128 131 | 
             
                parser (3.1.2.1)
         | 
| 129 132 | 
             
                  ast (~> 2.4.1)
         | 
| 130 133 | 
             
                public_suffix (5.0.1)
         | 
| 131 | 
            -
                racc (1.6. | 
| 132 | 
            -
                rack (2.2. | 
| 133 | 
            -
                rack-test (2.0 | 
| 134 | 
            +
                racc (1.6.2)
         | 
| 135 | 
            +
                rack (2.2.7)
         | 
| 136 | 
            +
                rack-test (2.1.0)
         | 
| 134 137 | 
             
                  rack (>= 1.3)
         | 
| 135 138 | 
             
                rails (7.0.4)
         | 
| 136 139 | 
             
                  actioncable (= 7.0.4)
         | 
| @@ -149,8 +152,8 @@ GEM | |
| 149 152 | 
             
                rails-dom-testing (2.0.3)
         | 
| 150 153 | 
             
                  activesupport (>= 4.2.0)
         | 
| 151 154 | 
             
                  nokogiri (>= 1.6)
         | 
| 152 | 
            -
                rails-html-sanitizer (1. | 
| 153 | 
            -
                  loofah (~> 2. | 
| 155 | 
            +
                rails-html-sanitizer (1.5.0)
         | 
| 156 | 
            +
                  loofah (~> 2.19, >= 2.19.1)
         | 
| 154 157 | 
             
                railties (7.0.4)
         | 
| 155 158 | 
             
                  actionpack (= 7.0.4)
         | 
| 156 159 | 
             
                  activesupport (= 7.0.4)
         | 
| @@ -193,8 +196,8 @@ GEM | |
| 193 196 | 
             
                ruby-vips (2.1.4)
         | 
| 194 197 | 
             
                  ffi (~> 1.12)
         | 
| 195 198 | 
             
                ssrf_filter (1.1.1)
         | 
| 196 | 
            -
                thor (1.2. | 
| 197 | 
            -
                timeout (0.3. | 
| 199 | 
            +
                thor (1.2.2)
         | 
| 200 | 
            +
                timeout (0.3.2)
         | 
| 198 201 | 
             
                tzinfo (2.0.5)
         | 
| 199 202 | 
             
                  concurrent-ruby (~> 1.0)
         | 
| 200 203 | 
             
                unicode-display_width (2.3.0)
         | 
| @@ -204,7 +207,7 @@ GEM | |
| 204 207 | 
             
                websocket-driver (0.7.5)
         | 
| 205 208 | 
             
                  websocket-extensions (>= 0.1.0)
         | 
| 206 209 | 
             
                websocket-extensions (0.1.5)
         | 
| 207 | 
            -
                zeitwerk (2.6. | 
| 210 | 
            +
                zeitwerk (2.6.8)
         | 
| 208 211 |  | 
| 209 212 | 
             
            PLATFORMS
         | 
| 210 213 | 
             
              arm64-darwin-21
         | 
    
        data/README.md
    CHANGED
    
    | @@ -105,6 +105,43 @@ rake assets:webp | |
| 105 105 | 
             
            Assets will be compiled to `public/assets/` or the path that you specifed in `Rails.application.config.assets.prefix`.
         | 
| 106 106 | 
             
            The file names of the generated image assets will be in the format:`OLD_IMAGE.OLD_EXTENSION.webp`
         | 
| 107 107 |  | 
| 108 | 
            +
            ### ActiveStorage integration
         | 
| 109 | 
            +
             | 
| 110 | 
            +
            If you are using ActiveStorage you will need to first enable the `image_processing` gem. Usually, uncommenting this from your Gemfile:
         | 
| 111 | 
            +
            ```
         | 
| 112 | 
            +
            gem "image_processing", "~> 1.2"
         | 
| 113 | 
            +
            ```
         | 
| 114 | 
            +
             | 
| 115 | 
            +
            Then, you will need to install the VIPS image processing library binaries. Check the [VIPS Ruby wrapper gem](https://github.com/libvips/ruby-vips) for installation instructions for your OS.
         | 
| 116 | 
            +
             | 
| 117 | 
            +
            Finally, in `application.rb` configure ActiveStorage to use VIPS:
         | 
| 118 | 
            +
             | 
| 119 | 
            +
            ```ruby
         | 
| 120 | 
            +
            config.active_storage.variant_processor = :vips
         | 
| 121 | 
            +
            ```
         | 
| 122 | 
            +
             | 
| 123 | 
            +
            You are ready to start using WebP variants in your models like this:
         | 
| 124 | 
            +
             | 
| 125 | 
            +
            ```ruby
         | 
| 126 | 
            +
            class User < ApplicationRecord
         | 
| 127 | 
            +
              has_one_attached :avatar do |attachable|
         | 
| 128 | 
            +
                attachable.variant :small, resize_to_limit: [400, 400]
         | 
| 129 | 
            +
                attachable.variant :webp, {
         | 
| 130 | 
            +
                  convert: :webp,
         | 
| 131 | 
            +
                  format: :webp,
         | 
| 132 | 
            +
                  saver: { quality: 80 }
         | 
| 133 | 
            +
                }
         | 
| 134 | 
            +
                attachable.variant :webp_small, {
         | 
| 135 | 
            +
                  resize_to_limit: [400, 400],
         | 
| 136 | 
            +
                  convert: :webp,
         | 
| 137 | 
            +
                  format: :webp,
         | 
| 138 | 
            +
                  saver: { quality: 80 }
         | 
| 139 | 
            +
                }
         | 
| 140 | 
            +
              end
         | 
| 141 | 
            +
            end
         | 
| 142 | 
            +
            ```
         | 
| 143 | 
            +
             | 
| 144 | 
            +
             | 
| 108 145 | 
             
            ### Carrierwave integration
         | 
| 109 146 |  | 
| 110 147 | 
             
            A `convert_to_webp` method that converts images to WebP is provided. You can send any encoding option available to [webp-ffi](https://github.com/le0pard/webp-ffi#encode-webp-image).
         | 
| @@ -115,7 +152,7 @@ Example Uploader class: | |
| 115 152 | 
             
            class ImageUploader < CarrierWave::Uploader::Base
         | 
| 116 153 | 
             
              include NextGenImages::CarrierwaveHelpers
         | 
| 117 154 |  | 
| 118 | 
            -
              version :small | 
| 155 | 
            +
              version :small do
         | 
| 119 156 | 
             
                process resize_to_fit: [400, 400]
         | 
| 120 157 | 
             
              end
         | 
| 121 158 |  | 
| @@ -31,13 +31,13 @@ module NextGenImages | |
| 31 31 |  | 
| 32 32 | 
             
                  content = ''.html_safe
         | 
| 33 33 | 
             
                  if block.present?
         | 
| 34 | 
            -
                    content  | 
| 34 | 
            +
                    content << capture(&block).html_safe
         | 
| 35 35 | 
             
                  else
         | 
| 36 36 | 
             
                    [source].flatten.each do |img_src|
         | 
| 37 | 
            -
                      content  | 
| 37 | 
            +
                      content << build_source_from_img(image_path(img_src), add_webp)
         | 
| 38 38 | 
             
                    end
         | 
| 39 39 | 
             
                  end
         | 
| 40 | 
            -
                  content  | 
| 40 | 
            +
                  content << tag('img', image_options)
         | 
| 41 41 | 
             
                end
         | 
| 42 42 |  | 
| 43 43 | 
             
                def build_img_src(source)
         | 
| @@ -56,7 +56,7 @@ module NextGenImages | |
| 56 56 | 
             
                  webp_path = "#{img_path}.webp"
         | 
| 57 57 | 
             
                  # order of source tags matters
         | 
| 58 58 | 
             
                  if add_webp && file_exist_in_public_path?(webp_path)
         | 
| 59 | 
            -
                    source_tags  | 
| 59 | 
            +
                    source_tags << source_tag(srcset: webp_path, type: 'image/webp')
         | 
| 60 60 | 
             
                  end
         | 
| 61 61 | 
             
                  source_tags + source_tag(
         | 
| 62 62 | 
             
                    srcset: img_path,
         | 
    
        data/lib/next_gen_images.rb
    CHANGED
    
    
| @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative 'lib/next_gen_images/version'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Gem::Specification.new do |spec|
         | 
| 6 | 
            +
              spec.name = 'next_gen_images'
         | 
| 7 | 
            +
              spec.version = NextGenImages::VERSION
         | 
| 8 | 
            +
              spec.authors = ['JP Balarini']
         | 
| 9 | 
            +
              spec.email = ['jp@eagerworks.com']
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              spec.summary = 'Handle next-gen image formats in your Ruby on Rails project. WebP is currently supported'
         | 
| 12 | 
            +
              spec.description = 'Adds support for a picture_tag and several utilities to automatically convert images to WebP'
         | 
| 13 | 
            +
              spec.homepage = 'https://eagerworks.com'
         | 
| 14 | 
            +
              spec.license = 'MIT'
         | 
| 15 | 
            +
              spec.required_ruby_version = '>= 2.6.0'
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              spec.metadata['allowed_push_host'] = 'https://rubygems.org'
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              spec.metadata['homepage_uri'] = spec.homepage
         | 
| 20 | 
            +
              spec.metadata['source_code_uri'] = 'https://github.com/eagerworks/next_gen_images'
         | 
| 21 | 
            +
              spec.metadata['rubygems_mfa_required'] = 'true'
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              # Specify which files should be added to the gem when it is released.
         | 
| 24 | 
            +
              # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
         | 
| 25 | 
            +
              spec.files = Dir.chdir(__dir__) do
         | 
| 26 | 
            +
                `git ls-files -z`.split("\x0").reject do |f|
         | 
| 27 | 
            +
                  (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
              spec.bindir = 'exe'
         | 
| 31 | 
            +
              spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
         | 
| 32 | 
            +
              spec.require_paths = ['lib']
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              spec.add_runtime_dependency 'rails', '>= 3.1'
         | 
| 35 | 
            +
              spec.add_runtime_dependency 'webp-ffi', '~> 0.3.1'
         | 
| 36 | 
            +
              spec.add_development_dependency 'bundler'
         | 
| 37 | 
            +
              spec.add_development_dependency 'carrierwave', '>= 2.0'
         | 
| 38 | 
            +
              spec.add_development_dependency 'rspec', '~> 3.12.0'
         | 
| 39 | 
            +
              spec.add_development_dependency 'rubocop-rspec', '~> 2.17.1'
         | 
| 40 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: next_gen_images
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 1.1.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - JP Balarini
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2023- | 
| 11 | 
            +
            date: 2023-07-31 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -116,6 +116,7 @@ files: | |
| 116 116 | 
             
            - lib/next_gen_images/tasks/assets/webp.rake
         | 
| 117 117 | 
             
            - lib/next_gen_images/version.rb
         | 
| 118 118 | 
             
            - lib/next_gen_images/view_helpers.rb
         | 
| 119 | 
            +
            - next_gen_images.gemspec
         | 
| 119 120 | 
             
            - sig/next_gen_images.rbs
         | 
| 120 121 | 
             
            homepage: https://eagerworks.com
         | 
| 121 122 | 
             
            licenses:
         |