sprockets-webp 0.1.2 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 638a2cf36cb0c1e2086fcc669ff03295639c2ff9
4
- data.tar.gz: a99a1d0e61c4f02731f677d63754f6e628bf8bea
3
+ metadata.gz: 642506ee4f9e939c6db5a5bc7162cdac1c92d48b
4
+ data.tar.gz: 030e4ff9ae8e2e17fc0af84c2d8e709585ecbf25
5
5
  SHA512:
6
- metadata.gz: 9e14fce9ddb7e8667c970573d1581d1d10ff789f9e448fe4a1222913be8414b9fbae8d3550dbd2610140fb5163aac3d3ae8d61c7d4f99b3fb42aca361bb088ee
7
- data.tar.gz: 1915b7df19c47194202bbf038ee5b56b4e61d349d53af185d1fba8bb033aa1618c71d0ad485987dcca6df9350f3610a77296560bd279d8875c25c9a8fb867ac3
6
+ metadata.gz: d24725eaadae7d2643f70c74a60531c0aff1e1b7d472c0ec45809595873b9f78445a2bca5c35246103ae179f56ef9eba80c1d649964fa9d11c851f4c83c6377f
7
+ data.tar.gz: 9835ac60ebcb656697b5825d77b15df2149459d734382955231fbfa74ddb2877e17409c5adcce74ed339a8a4fb4d8c96844d76a5becddab89a868d6dbc03040f
data/README.md CHANGED
@@ -1,20 +1,44 @@
1
1
  # Sprockets::WebP
2
2
 
3
- Sprockets converter of PNG and JPEG assets to WebP
3
+ This gem provides a Rails Asset Pipeline hook for converting PNG and JPEG assets to WebP format.
4
+
5
+ ## Requirements
6
+
7
+ The main requirement is obviously [libwebp](https://developers.google.com/speed/webp/) itself. Please, consult the [webp-ffi](https://github.com/le0pard/webp-ffi) README for the installation instructions.
4
8
 
5
9
  ## Installation
6
10
 
7
- Add this line to your application's Gemfile:
11
+ If you're using Rails 4 you need to add gem to the ```:production``` group in to your application's Gemfile:
12
+
13
+ group :produciton do
14
+ # ...
15
+ gem 'sprockets-webp'
16
+ # ...
17
+ end
18
+
19
+ In case of Rails 3, add it to the ```:assets``` group:
8
20
 
9
- gem 'sprockets-webp'
21
+ group :assets do
22
+ # ...
23
+ gem 'sprockets-webp'
24
+ # ...
25
+ end
10
26
 
11
27
  And then execute:
12
28
 
13
29
  $ bundle
14
30
 
15
- Or install it yourself as:
31
+ Drop some PNGs and JPGs into ```app/assets/images``` and you can test converter locally with the Rake task:
32
+
33
+ $ bundle exec rake assets:precompile RAILS_ENV=production
34
+
35
+ ### Rails 3 Notice
36
+
37
+ Minimal required version of Rails 3 is ```3.2.9```, because of Sprockets ```~> 2.2``` dependency requirement.
38
+
39
+ ### Rails 4 Notice
16
40
 
17
- $ gem install sprockets-webp
41
+ I don't have any Rails 4 live apps right now, so I can't test this gem in "real", non synthetic, environment. So, if you have some problems, ideas or suggestions caused your Rails 4 application, please, feel free to contact me.
18
42
 
19
43
  ## Contributing
20
44
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  require 'sprockets/webp/version'
2
4
  require 'sprockets/webp/converter'
3
5
  require 'sprockets/webp/railtie' if defined?(Rails::Engine)
@@ -4,33 +4,37 @@ require 'tempfile'
4
4
  require 'fileutils'
5
5
  require 'webp-ffi'
6
6
 
7
- class Converter
8
- def self.process(app, context, data)
9
- # Application Config alias
10
- config = app.config.assets
11
-
12
- # If Application Assets Digests enabled - Add Digest
13
- digest = config.digest ? "-#{context.environment.digest.update(data).hexdigest}" : nil
14
- file_name = context.logical_path # Original File name w/o extension
15
- file_ext = context.pathname.extname # Original File extension
16
- webp_file = "#{file_name}#{digest}#{file_ext}.webp" # WebP File fullname
17
-
18
- # WebP File Pathname
19
- webp_path = Pathname.new File.join(app.root, 'public', config.prefix, webp_file)
20
-
21
- # Create Directory for both Files, unless already exists
22
- FileUtils.mkdir_p(webp_path.dirname) unless Dir.exists?(webp_path.dirname)
23
-
24
- # Create Temp File with Original File binary data
25
- Tempfile.open('webp') do |file|
26
- file.binmode
27
- file.write(data)
28
- file.close
29
-
30
- # Encode Original File Temp copy to WebP File Pathname
31
- ::WebP.encode(file.path, webp_path.to_path)
7
+ module Sprockets
8
+ module WebP
9
+ class Converter
10
+ def self.process(app, context, data)
11
+ # Application Config alias
12
+ config = app.config.assets
13
+
14
+ # If Application Assets Digests enabled - Add Digest
15
+ digest = config.digest ? "-#{context.environment.digest.update(data).hexdigest}" : nil
16
+ file_name = context.logical_path # Original File name w/o extension
17
+ file_ext = context.pathname.extname # Original File extension
18
+ webp_file = "#{file_name}#{digest}#{file_ext}.webp" # WebP File fullname
19
+
20
+ # WebP File Pathname
21
+ webp_path = Pathname.new File.join(app.root, 'public', config.prefix, webp_file)
22
+
23
+ # Create Directory for both Files, unless already exists
24
+ FileUtils.mkdir_p(webp_path.dirname) unless Dir.exists?(webp_path.dirname)
25
+
26
+ # Create Temp File with Original File binary data
27
+ Tempfile.open('webp') do |file|
28
+ file.binmode
29
+ file.write(data)
30
+ file.close
31
+
32
+ # Encode Original File Temp copy to WebP File Pathname
33
+ ::WebP.encode(file.path, webp_path.to_path)
34
+ end
35
+
36
+ data
37
+ end
32
38
  end
33
-
34
- data
35
39
  end
36
40
  end
@@ -1,18 +1,14 @@
1
+ # encoding: utf-8
2
+
1
3
  module Sprockets
2
4
  module WebP
3
- class Railtie < Rails::Engine
4
- initializer 'sprockets.webp', after: 'sprockets.environment' do |app|
5
- next if app.config.assets.compile
6
- assets = app.assets
7
-
8
- assets.register_mime_type 'image/png', '.png'
9
- assets.register_mime_type 'image/jpeg', '.jpg'
10
-
11
- assets.register_postprocessor 'image/jpeg', :jpeg_webp do |context, data|
5
+ class Railtie < ::Rails::Engine
6
+ initializer :webp do |app|
7
+ app.assets.register_postprocessor 'image/jpeg', :jpeg_webp do |context, data|
12
8
  Converter.process(app, context, data)
13
9
  end
14
10
 
15
- assets.register_postprocessor 'image/png', :png_webp do |context, data|
11
+ app.assets.register_postprocessor 'image/png', :png_webp do |context, data|
16
12
  Converter.process(app, context, data)
17
13
  end
18
14
  end
@@ -1,5 +1,7 @@
1
+ # encoding: utf-8
2
+
1
3
  module Sprockets
2
4
  module WebP
3
- VERSION = '0.1.2'
5
+ VERSION = '0.2.0'
4
6
  end
5
7
  end
@@ -17,6 +17,9 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^spec/})
18
18
  spec.require_paths = ['lib']
19
19
 
20
+ spec.required_ruby_version = '>= 1.9.3'
21
+
22
+ spec.add_dependency 'sprockets', '~> 2.2'
20
23
  spec.add_dependency 'webp-ffi', '~> 0.1.7'
21
24
 
22
25
  spec.add_development_dependency 'bundler', '~> 1.3'
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprockets-webp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Riveiro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-17 00:00:00.000000000 Z
11
+ date: 2013-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sprockets
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '2.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '2.2'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: webp-ffi
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +95,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
95
  requirements:
82
96
  - - '>='
83
97
  - !ruby/object:Gem::Version
84
- version: '0'
98
+ version: 1.9.3
85
99
  required_rubygems_version: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - '>='