sprockets-image_compressor 0.0.1
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.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.md +25 -0
- data/Rakefile +1 -0
- data/lib/sprockets/image_compressor/png_compressor.rb +20 -0
- data/lib/sprockets/image_compressor/railtie.rb +14 -0
- data/lib/sprockets/image_compressor/version.rb +5 -0
- data/lib/sprockets/image_compressor.rb +3 -0
- data/lib/sprockets-image_compressor.rb +1 -0
- data/sprockets-image_compressor.gemspec +24 -0
- metadata +75 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# Image compressor processor for Sprockets
|
2
|
+
|
3
|
+
Sprockets preprocessor to losslessly compress images. Requires [pngcrush](http://pmt.sourceforge.net/pngcrush/) to be installed and in your PATH.
|
4
|
+
|
5
|
+
## Integration with Rails 3.1+
|
6
|
+
|
7
|
+
Just add this gem to your Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'sprockets-image_compressor'
|
11
|
+
````
|
12
|
+
|
13
|
+
The gem ships with a Railtie which will automatically register the compressor preprocessor.
|
14
|
+
|
15
|
+
## Caveats
|
16
|
+
|
17
|
+
For the first release, it only compresses pngs with [pngcrush](http://pmt.sourceforge.net/pngcrush/). But don't worry, support for compressing jpegs via jpegoptim will be added shortly!
|
18
|
+
|
19
|
+
It doesn't even bother to make sure you have pngcrush installed.
|
20
|
+
|
21
|
+
Also, no tests.
|
22
|
+
|
23
|
+
### License
|
24
|
+
|
25
|
+
(MIT License) - Copyright (c) 2011 Micah Geisel
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Sprockets
|
2
|
+
module ImageCompressor
|
3
|
+
class PngCompressor
|
4
|
+
def compress(content)
|
5
|
+
compressed_png_data = ""
|
6
|
+
Tempfile.open ["in_file", ".png"] do |in_file|
|
7
|
+
out_file_path = in_file.path + ".optimized.png"
|
8
|
+
in_file.write content
|
9
|
+
in_file.close
|
10
|
+
out = `pngcrush #{in_file.path} #{out_file_path}`
|
11
|
+
in_file.delete
|
12
|
+
|
13
|
+
compressed_png_data = File.read out_file_path
|
14
|
+
File.unlink out_file_path
|
15
|
+
end
|
16
|
+
compressed_png_data
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Sprockets
|
2
|
+
module ImageCompressor
|
3
|
+
class Railtie < Rails::Engine
|
4
|
+
initializer :setup_png_compressor do |app|
|
5
|
+
if app.config.assets.compress
|
6
|
+
app.assets.register_mime_type 'image/png', '.png'
|
7
|
+
app.assets.register_postprocessor 'image/png', :png_compressor do |context, data|
|
8
|
+
PngCompressor.new.compress data
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require "sprockets/image_compressor"
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "sprockets/image_compressor/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "sprockets-image_compressor"
|
7
|
+
s.version = Sprockets::Imagecompressor::VERSION
|
8
|
+
s.authors = ["Micah Geisel"]
|
9
|
+
s.email = ["micah@botandrose.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Losslessly compress images in the Rails asset pipeline}
|
12
|
+
s.description = %q{Losslessly compress images in the Rails asset pipeline}
|
13
|
+
|
14
|
+
s.rubyforge_project = "sprockets-image_compressor"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
# s.add_development_dependency "rspec"
|
23
|
+
# s.add_runtime_dependency "rest-client"
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sprockets-image_compressor
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Micah Geisel
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-09-20 00:00:00 Z
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: Losslessly compress images in the Rails asset pipeline
|
22
|
+
email:
|
23
|
+
- micah@botandrose.com
|
24
|
+
executables: []
|
25
|
+
|
26
|
+
extensions: []
|
27
|
+
|
28
|
+
extra_rdoc_files: []
|
29
|
+
|
30
|
+
files:
|
31
|
+
- .gitignore
|
32
|
+
- Gemfile
|
33
|
+
- README.md
|
34
|
+
- Rakefile
|
35
|
+
- lib/sprockets-image_compressor.rb
|
36
|
+
- lib/sprockets/image_compressor.rb
|
37
|
+
- lib/sprockets/image_compressor/png_compressor.rb
|
38
|
+
- lib/sprockets/image_compressor/railtie.rb
|
39
|
+
- lib/sprockets/image_compressor/version.rb
|
40
|
+
- sprockets-image_compressor.gemspec
|
41
|
+
homepage: ""
|
42
|
+
licenses: []
|
43
|
+
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options: []
|
46
|
+
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
hash: 3
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
version: "0"
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
hash: 3
|
64
|
+
segments:
|
65
|
+
- 0
|
66
|
+
version: "0"
|
67
|
+
requirements: []
|
68
|
+
|
69
|
+
rubyforge_project: sprockets-image_compressor
|
70
|
+
rubygems_version: 1.8.10
|
71
|
+
signing_key:
|
72
|
+
specification_version: 3
|
73
|
+
summary: Losslessly compress images in the Rails asset pipeline
|
74
|
+
test_files: []
|
75
|
+
|