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:
|