ack-paperclip-meta 1.2.3 → 3.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.
- checksums.yaml +4 -4
- data/README.md +9 -20
- data/lib/paperclip/meta/attachment.rb +70 -82
- data/lib/paperclip/meta/railtie.rb +1 -5
- data/lib/paperclip/meta/version.rb +1 -1
- data/lib/paperclip-meta.rb +2 -1
- metadata +12 -35
- data/.gitignore +0 -8
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/.travis.yml +0 -10
- data/Gemfile +0 -10
- data/Rakefile +0 -10
- data/paperclip-meta.gemspec +0 -32
- data/release.sh +0 -7
- data/spec/attachment_spec.rb +0 -144
- data/spec/fixtures/big.jpg +0 -0
- data/spec/fixtures/big.zip +0 -0
- data/spec/fixtures/small.png +0 -0
- data/spec/gemfiles/Gemfile.paperclip-3 +0 -17
- data/spec/gemfiles/Gemfile.paperclip-4 +0 -17
- data/spec/schema.rb +0 -15
- data/spec/spec_helper.rb +0 -53
- data/tasks/reprocess_meta.rake +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 694a6136ef56089c20e41c1b6295e2527233dd79
|
4
|
+
data.tar.gz: 032d53f654ba5a2e30e42cb461f89caa32c6cc85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f357bdeec11356c7e43e4f70884dd7771caee68e8ed21b5199caeac6cfea352f2d72ec229ae88ebb5cda17545e1a935df7ec28a963720ba7eef6a0c9389a6506
|
7
|
+
data.tar.gz: c471f45698ffc461ee147ef27115689fe3111910580dd125ab5782ffed769a155cc06a815c6fba241aa7b54125c3912d9b124b0dc665e49e2e57420d5f7729d4
|
data/README.md
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
-
# Paperclip Meta
|
1
|
+
# Ack Paperclip Meta
|
2
2
|
|
3
|
-
|
4
|
-
[](https://travis-ci.org/teeparham/paperclip-meta)
|
3
|
+
Mongoid support
|
5
4
|
|
6
5
|
Add width, height, and size to paperclip images.
|
7
6
|
|
8
7
|
Paperclip Meta gets image dimensions after `post_process_styles` using paperclip's `Geometry.from_file`.
|
9
8
|
|
10
|
-
Paperclip Meta works with paperclip
|
9
|
+
Paperclip Meta works with paperclip version 5.x.
|
10
|
+
|
11
|
+
Version 2.x works with paperclip version 4.x.
|
11
12
|
|
12
13
|
### Setup
|
13
14
|
|
@@ -51,7 +52,7 @@ style: {
|
|
51
52
|
|
52
53
|
This hash will be marshaled and base64 encoded before writing to model attribute.
|
53
54
|
|
54
|
-
`height`, `width`, and `
|
55
|
+
`height`, `width`, `image_size` and `aspect_ratio` methods are provided:
|
55
56
|
|
56
57
|
```ruby
|
57
58
|
user.avatar.width(:thumb)
|
@@ -60,6 +61,8 @@ user.avatar.height(:medium)
|
|
60
61
|
=> 200
|
61
62
|
user.avatar.image_size
|
62
63
|
=> '60x70'
|
64
|
+
user.avatar.aspect_ratio
|
65
|
+
=> 1.5
|
63
66
|
```
|
64
67
|
|
65
68
|
You can pass the image style to these methods. If a style is not passed, the default style will be used.
|
@@ -74,19 +77,5 @@ Test:
|
|
74
77
|
|
75
78
|
```sh
|
76
79
|
bundle
|
77
|
-
rake
|
78
|
-
```
|
79
|
-
|
80
|
-
Test paperclip 3.x:
|
81
|
-
|
82
|
-
```sh
|
83
|
-
BUNDLE_GEMFILE=./spec/gemfiles/Gemfile.paperclip-3 bundle
|
84
|
-
BUNDLE_GEMFILE=./spec/gemfiles/Gemfile.paperclip-3 rake
|
85
|
-
```
|
86
|
-
|
87
|
-
Test paperclip 4.x:
|
88
|
-
|
89
|
-
```sh
|
90
|
-
BUNDLE_GEMFILE=./spec/gemfiles/Gemfile.paperclip-4 bundle
|
91
|
-
BUNDLE_GEMFILE=./spec/gemfiles/Gemfile.paperclip-4 rake
|
80
|
+
bundle exec rake
|
92
81
|
```
|
@@ -1,110 +1,98 @@
|
|
1
1
|
module Paperclip
|
2
2
|
module Meta
|
3
3
|
module Attachment
|
4
|
-
def
|
5
|
-
|
6
|
-
|
7
|
-
base.alias_method_chain :post_process_styles, :meta_data
|
8
|
-
base.alias_method_chain :size, :meta_data
|
4
|
+
def assign_attributes
|
5
|
+
super
|
6
|
+
assign_meta
|
9
7
|
end
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
instance_write(:meta, meta_encode({}))
|
15
|
-
elsif !@queued_for_write.nil? and !@queued_for_write.empty?
|
16
|
-
post_process_styles_with_meta_data(@queued_for_write.keys.flatten)
|
17
|
-
end
|
18
|
-
save_without_meta_data
|
9
|
+
def save
|
10
|
+
if @queued_for_delete.any? && @queued_for_write.empty?
|
11
|
+
instance_write(:meta, meta_encode({}))
|
19
12
|
end
|
13
|
+
super
|
14
|
+
end
|
20
15
|
|
21
|
-
|
22
|
-
|
23
|
-
|
16
|
+
def post_process_styles(*styles)
|
17
|
+
super(*styles)
|
18
|
+
assign_meta
|
19
|
+
end
|
24
20
|
|
25
|
-
|
26
|
-
|
21
|
+
# Use meta info for style if required
|
22
|
+
def size(style = nil)
|
23
|
+
style ? read_meta(style, :size) : super()
|
24
|
+
end
|
27
25
|
|
28
|
-
|
29
|
-
|
30
|
-
|
26
|
+
def height(style = default_style)
|
27
|
+
read_meta style, :height
|
28
|
+
end
|
31
29
|
|
32
|
-
|
33
|
-
|
30
|
+
def width(style = default_style)
|
31
|
+
read_meta style, :width
|
32
|
+
end
|
34
33
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
end
|
34
|
+
def aspect_ratio(style = default_style)
|
35
|
+
width(style).to_f / height(style).to_f
|
36
|
+
end
|
39
37
|
|
40
|
-
|
41
|
-
|
42
|
-
|
38
|
+
# Return image dimesions ("WxH") for given style name. If style name not given,
|
39
|
+
# return dimesions for default_style.
|
40
|
+
def image_size(style = default_style)
|
41
|
+
"#{width(style)}x#{height(style)}"
|
42
|
+
end
|
43
43
|
|
44
|
-
|
45
|
-
read_meta style, :width
|
46
|
-
end
|
44
|
+
private
|
47
45
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
h = height(style)
|
53
|
-
"#{w}#{h && "x#{h}"}" if w || h
|
54
|
-
end
|
46
|
+
def assign_meta
|
47
|
+
return unless instance.respond_to?(:"#{name}_meta=")
|
48
|
+
meta = populate_meta(@queued_for_write)
|
49
|
+
return if meta == {}
|
55
50
|
|
56
|
-
|
57
|
-
|
58
|
-
meta_decode(instance_read(:meta)).freeze
|
59
|
-
end
|
60
|
-
end
|
51
|
+
write_meta(meta)
|
52
|
+
end
|
61
53
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
meta[style] = { width: geo.width.to_i, height: geo.height.to_i, size: file.size }
|
71
|
-
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
|
72
|
-
meta[style] = {}
|
73
|
-
end
|
54
|
+
def populate_meta(queue)
|
55
|
+
meta = {}
|
56
|
+
queue.each do |style, file|
|
57
|
+
begin
|
58
|
+
geo = Geometry.from_file file
|
59
|
+
meta[style] = { width: geo.width.to_i, height: geo.height.to_i, size: file.size }
|
60
|
+
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
|
61
|
+
meta[style] = {}
|
74
62
|
end
|
75
|
-
meta
|
76
63
|
end
|
64
|
+
meta
|
65
|
+
end
|
77
66
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
67
|
+
def write_meta(meta)
|
68
|
+
merge_existing_meta_hash meta
|
69
|
+
instance.send("#{name}_meta=", meta_encode(meta))
|
70
|
+
end
|
82
71
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
end
|
72
|
+
# Return meta data for given style
|
73
|
+
def read_meta(style, item)
|
74
|
+
if instance.respond_to?(:"#{name}_meta") && instance_read(:meta)
|
75
|
+
if (meta = meta_decode(instance_read(:meta)))
|
76
|
+
meta[style] && meta[style][item]
|
89
77
|
end
|
90
78
|
end
|
79
|
+
end
|
91
80
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
81
|
+
# Return encoded metadata as String
|
82
|
+
def meta_encode(meta)
|
83
|
+
Base64.encode64(Marshal.dump(meta))
|
84
|
+
end
|
96
85
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
86
|
+
# Return decoded metadata as Object
|
87
|
+
def meta_decode(meta)
|
88
|
+
Marshal.load(Base64.decode64(meta))
|
89
|
+
end
|
101
90
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
end
|
91
|
+
# Retain existing meta values that will not be recalculated when
|
92
|
+
# reprocessing a subset of styles
|
93
|
+
def merge_existing_meta_hash(meta)
|
94
|
+
return unless (original_meta = instance.send("#{name}_meta"))
|
95
|
+
meta.reverse_merge! meta_decode(original_meta)
|
108
96
|
end
|
109
97
|
end
|
110
98
|
end
|
@@ -1,8 +1,5 @@
|
|
1
|
-
require 'paperclip/meta'
|
2
|
-
|
3
1
|
module Paperclip
|
4
2
|
module Meta
|
5
|
-
|
6
3
|
if defined? ::Rails::Railtie
|
7
4
|
class Railtie < ::Rails::Railtie
|
8
5
|
initializer :paperclip_meta do
|
@@ -23,9 +20,8 @@ module Paperclip
|
|
23
20
|
|
24
21
|
class Railtie
|
25
22
|
def self.insert
|
26
|
-
Paperclip::Attachment.
|
23
|
+
Paperclip::Attachment.prepend Paperclip::Meta::Attachment
|
27
24
|
end
|
28
25
|
end
|
29
|
-
|
30
26
|
end
|
31
27
|
end
|
data/lib/paperclip-meta.rb
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
require 'paperclip
|
1
|
+
require 'paperclip'
|
2
|
+
require 'paperclip/meta'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ack-paperclip-meta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ack
|
@@ -10,70 +10,64 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2017-03-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: paperclip
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- - ">="
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 3.0.2
|
22
19
|
- - "<"
|
23
20
|
- !ruby/object:Gem::Version
|
24
|
-
version: '
|
21
|
+
version: '6.0'
|
25
22
|
type: :runtime
|
26
23
|
prerelease: false
|
27
24
|
version_requirements: !ruby/object:Gem::Requirement
|
28
25
|
requirements:
|
29
|
-
- - ">="
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
version: 3.0.2
|
32
26
|
- - "<"
|
33
27
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
28
|
+
version: '6.0'
|
35
29
|
- !ruby/object:Gem::Dependency
|
36
30
|
name: bundler
|
37
31
|
requirement: !ruby/object:Gem::Requirement
|
38
32
|
requirements:
|
39
33
|
- - "~>"
|
40
34
|
- !ruby/object:Gem::Version
|
41
|
-
version: '1.
|
35
|
+
version: '1.13'
|
42
36
|
type: :development
|
43
37
|
prerelease: false
|
44
38
|
version_requirements: !ruby/object:Gem::Requirement
|
45
39
|
requirements:
|
46
40
|
- - "~>"
|
47
41
|
- !ruby/object:Gem::Version
|
48
|
-
version: '1.
|
42
|
+
version: '1.13'
|
49
43
|
- !ruby/object:Gem::Dependency
|
50
44
|
name: rake
|
51
45
|
requirement: !ruby/object:Gem::Requirement
|
52
46
|
requirements:
|
53
47
|
- - "~>"
|
54
48
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
49
|
+
version: '11.3'
|
56
50
|
type: :development
|
57
51
|
prerelease: false
|
58
52
|
version_requirements: !ruby/object:Gem::Requirement
|
59
53
|
requirements:
|
60
54
|
- - "~>"
|
61
55
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
56
|
+
version: '11.3'
|
63
57
|
- !ruby/object:Gem::Dependency
|
64
58
|
name: mocha
|
65
59
|
requirement: !ruby/object:Gem::Requirement
|
66
60
|
requirements:
|
67
61
|
- - "~>"
|
68
62
|
- !ruby/object:Gem::Version
|
69
|
-
version: '1.
|
63
|
+
version: '1.2'
|
70
64
|
type: :development
|
71
65
|
prerelease: false
|
72
66
|
version_requirements: !ruby/object:Gem::Requirement
|
73
67
|
requirements:
|
74
68
|
- - "~>"
|
75
69
|
- !ruby/object:Gem::Version
|
76
|
-
version: '1.
|
70
|
+
version: '1.2'
|
77
71
|
description: Add width, height and size methods to paperclip images
|
78
72
|
email:
|
79
73
|
- i43ack@gmail.com
|
@@ -83,14 +77,8 @@ executables: []
|
|
83
77
|
extensions: []
|
84
78
|
extra_rdoc_files: []
|
85
79
|
files:
|
86
|
-
- ".gitignore"
|
87
|
-
- ".ruby-gemset"
|
88
|
-
- ".ruby-version"
|
89
|
-
- ".travis.yml"
|
90
|
-
- Gemfile
|
91
80
|
- LICENSE.txt
|
92
81
|
- README.md
|
93
|
-
- Rakefile
|
94
82
|
- lib/ack-paperclip-meta.rb
|
95
83
|
- lib/paperclip-meta.rb
|
96
84
|
- lib/paperclip/meta.rb
|
@@ -98,17 +86,6 @@ files:
|
|
98
86
|
- lib/paperclip/meta/process_meta_service.rb
|
99
87
|
- lib/paperclip/meta/railtie.rb
|
100
88
|
- lib/paperclip/meta/version.rb
|
101
|
-
- paperclip-meta.gemspec
|
102
|
-
- release.sh
|
103
|
-
- spec/attachment_spec.rb
|
104
|
-
- spec/fixtures/big.jpg
|
105
|
-
- spec/fixtures/big.zip
|
106
|
-
- spec/fixtures/small.png
|
107
|
-
- spec/gemfiles/Gemfile.paperclip-3
|
108
|
-
- spec/gemfiles/Gemfile.paperclip-4
|
109
|
-
- spec/schema.rb
|
110
|
-
- spec/spec_helper.rb
|
111
|
-
- tasks/reprocess_meta.rake
|
112
89
|
homepage: http://github.com/ack43/paperclip-meta
|
113
90
|
licenses:
|
114
91
|
- MIT
|
@@ -121,7 +98,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
121
98
|
requirements:
|
122
99
|
- - ">="
|
123
100
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
101
|
+
version: 2.2.2
|
125
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
103
|
requirements:
|
127
104
|
- - ">="
|
@@ -129,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
106
|
version: '0'
|
130
107
|
requirements: []
|
131
108
|
rubyforge_project:
|
132
|
-
rubygems_version: 2.4.
|
109
|
+
rubygems_version: 2.4.8
|
133
110
|
signing_key:
|
134
111
|
specification_version: 4
|
135
112
|
summary: Add width, height, and size to paperclip images
|
data/.gitignore
DELETED
data/.ruby-gemset
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
ack_paperclip-meta
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.2.2
|
data/.travis.yml
DELETED
data/Gemfile
DELETED
data/Rakefile
DELETED
data/paperclip-meta.gemspec
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "paperclip/meta/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |s|
|
6
|
-
s.name = "ack-paperclip-meta"
|
7
|
-
s.version = Paperclip::Meta::VERSION
|
8
|
-
s.authors = ["ack", "Alexey Bondar", "Tee Parham"]
|
9
|
-
s.email = ["i43ack@gmail.com", "y8@ya.ru", "tee@neighborland.com"]
|
10
|
-
s.homepage = "http://github.com/ack43/paperclip-meta"
|
11
|
-
s.summary = %q{Add width, height, and size to paperclip images}
|
12
|
-
s.description = %q{Add width, height and size methods to paperclip images}
|
13
|
-
s.license = "MIT"
|
14
|
-
|
15
|
-
s.files = `git ls-files`.split("\n")
|
16
|
-
s.test_files = `git ls-files -- {test,spec}/*`.split("\n")
|
17
|
-
s.executables = []
|
18
|
-
s.require_paths = ["lib"]
|
19
|
-
|
20
|
-
s.required_ruby_version = ">= 1.9.3"
|
21
|
-
|
22
|
-
s.add_dependency "paperclip", ">= 3.0.2", "< 5.0"
|
23
|
-
|
24
|
-
s.add_development_dependency "bundler", "~> 1.5"
|
25
|
-
s.add_development_dependency "rake", "~> 10.1"
|
26
|
-
s.add_development_dependency "mocha", "~> 1.0"
|
27
|
-
# s.add_development_dependency "activerecord", ">= 4.0"
|
28
|
-
|
29
|
-
# sqlite3 1.3.9 does not work with rubinius 2.2.5:
|
30
|
-
# https://github.com/sparklemotion/sqlite3-ruby/issues/122
|
31
|
-
# s.add_development_dependency "sqlite3", "1.3.8"
|
32
|
-
end
|
data/release.sh
DELETED
data/spec/attachment_spec.rb
DELETED
@@ -1,144 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Attachment" do
|
4
|
-
it "saves image geometry for original image" do
|
5
|
-
img = Image.create(small_image: small_image)
|
6
|
-
img.reload
|
7
|
-
geometry = geometry_for(small_path)
|
8
|
-
assert_equal geometry.width, img.small_image.width
|
9
|
-
assert_equal geometry.height, img.small_image.height
|
10
|
-
assert_equal "50x64", img.small_image.image_size
|
11
|
-
end
|
12
|
-
|
13
|
-
it "saves geometry for styles" do
|
14
|
-
img = Image.create(small_image: small_image, big_image: big_image)
|
15
|
-
assert_equal 100, img.big_image.width(:thumb)
|
16
|
-
assert_equal 100, img.big_image.height(:thumb)
|
17
|
-
end
|
18
|
-
|
19
|
-
it "saves original style geometry" do
|
20
|
-
img = Image.create(small_image: small_image)
|
21
|
-
assert_equal 50, img.small_image.width(:original)
|
22
|
-
assert_equal 64, img.small_image.height(:original)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "sets geometry on update" do
|
26
|
-
img = Image.create!
|
27
|
-
img.small_image = small_image
|
28
|
-
img.save
|
29
|
-
geometry = geometry_for(small_path)
|
30
|
-
assert_equal geometry.width, img.small_image.width
|
31
|
-
assert_equal geometry.height, img.small_image.height
|
32
|
-
end
|
33
|
-
|
34
|
-
describe '#size' do
|
35
|
-
before do
|
36
|
-
@image = Image.create(big_image: big_image)
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'should save file size with meta data ' do
|
40
|
-
path = File.join(File.dirname(__FILE__), "tmp/fixtures/tmp/thumb/#{@image.id}.jpg")
|
41
|
-
size = File.stat(path).size
|
42
|
-
assert_equal size, @image.big_image.size(:thumb)
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'should access normal paperclip method when no style passed' do
|
46
|
-
@image.big_image.expects size_without_meta_data: 1234
|
47
|
-
assert_equal 1234, @image.big_image.size
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'should have access to original file size' do
|
51
|
-
assert_equal 37042, @image.big_image.size
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
it "clears geometry fields when image is destroyed" do
|
56
|
-
img = Image.create(small_image: small_image, big_image: big_image)
|
57
|
-
assert_equal 100, img.big_image.width(:thumb)
|
58
|
-
img.big_image = nil
|
59
|
-
img.save!
|
60
|
-
assert_nil img.big_image.width(:thumb)
|
61
|
-
end
|
62
|
-
|
63
|
-
it "does not save when file is not an image" do
|
64
|
-
img = Image.new
|
65
|
-
img.small_image = not_image
|
66
|
-
refute img.save
|
67
|
-
assert_nil img.small_image.width
|
68
|
-
end
|
69
|
-
|
70
|
-
it "returns nil attributes when file is not an image" do
|
71
|
-
img = ImageWithNoValidation.new
|
72
|
-
img.small_image = not_image
|
73
|
-
img.save!
|
74
|
-
assert_nil img.small_image.width
|
75
|
-
assert_nil img.small_image.height
|
76
|
-
end
|
77
|
-
|
78
|
-
it "preserves metadata when reprocessing a specific style" do
|
79
|
-
img = Image.new
|
80
|
-
img.big_image = big_image
|
81
|
-
img.save!
|
82
|
-
assert_equal 500, img.big_image.width(:large)
|
83
|
-
img.big_image.reprocess!(:thumb)
|
84
|
-
assert_equal 500, img.big_image.width(:large)
|
85
|
-
end
|
86
|
-
|
87
|
-
it "preserves metadata for unprocessed styles" do
|
88
|
-
img = Image.new
|
89
|
-
img.big_image = big_image
|
90
|
-
img.save!
|
91
|
-
|
92
|
-
# set big image meta to fake values for :large & missing :thumb
|
93
|
-
hash = { large: { height: 1, width: 2, size: 3 } }
|
94
|
-
img.update_column(:big_image_meta, img.big_image.send(:meta_encode, hash))
|
95
|
-
|
96
|
-
assert_equal 1, img.big_image.height(:large)
|
97
|
-
assert_equal 2, img.big_image.width(:large)
|
98
|
-
assert_equal 3, img.big_image.size(:large)
|
99
|
-
assert_nil img.big_image.height(:thumb)
|
100
|
-
assert_nil img.big_image.height(:original)
|
101
|
-
img.big_image.reprocess!(:thumb)
|
102
|
-
assert_equal 1, img.big_image.height(:large)
|
103
|
-
assert_equal 2, img.big_image.width(:large)
|
104
|
-
assert_equal 3, img.big_image.size(:large)
|
105
|
-
assert_equal 100, img.big_image.height(:thumb)
|
106
|
-
assert_equal 100, img.big_image.width(:thumb)
|
107
|
-
assert_equal 277, img.big_image.height(:original) # original is always reprocessed
|
108
|
-
end
|
109
|
-
|
110
|
-
it "replaces metadata when attachment changes" do
|
111
|
-
img = Image.new
|
112
|
-
img.big_image = big_image
|
113
|
-
img.save!
|
114
|
-
img.big_image = small_image
|
115
|
-
img.save!
|
116
|
-
assert_equal "50x64", img.big_image.image_size
|
117
|
-
assert_equal "100x100", img.big_image.image_size(:thumb)
|
118
|
-
assert_equal "500x500", img.big_image.image_size(:large)
|
119
|
-
end
|
120
|
-
|
121
|
-
private
|
122
|
-
|
123
|
-
def small_path
|
124
|
-
File.join(File.dirname(__FILE__), 'fixtures', 'small.png')
|
125
|
-
end
|
126
|
-
|
127
|
-
# 50x64
|
128
|
-
def small_image
|
129
|
-
File.open(small_path)
|
130
|
-
end
|
131
|
-
|
132
|
-
def geometry_for(path)
|
133
|
-
Paperclip::Geometry.from_file(path)
|
134
|
-
end
|
135
|
-
|
136
|
-
# 600x277
|
137
|
-
def big_image
|
138
|
-
File.open(File.join(File.dirname(__FILE__), 'fixtures', 'big.jpg'))
|
139
|
-
end
|
140
|
-
|
141
|
-
def not_image
|
142
|
-
File.open(File.join(File.dirname(__FILE__), 'fixtures', 'big.zip'))
|
143
|
-
end
|
144
|
-
end
|
data/spec/fixtures/big.jpg
DELETED
Binary file
|
data/spec/fixtures/big.zip
DELETED
Binary file
|
data/spec/fixtures/small.png
DELETED
Binary file
|
@@ -1,17 +0,0 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
platforms :jruby do
|
4
|
-
gem 'activerecord-jdbcsqlite3-adapter'
|
5
|
-
end
|
6
|
-
|
7
|
-
platforms :rbx do
|
8
|
-
gem 'json'
|
9
|
-
gem 'rubysl', '~> 2.0'
|
10
|
-
end
|
11
|
-
|
12
|
-
# See paperclip-meta.gemspec
|
13
|
-
gemspec path: '../..'
|
14
|
-
|
15
|
-
gem 'activerecord', '~> 4.0.0'
|
16
|
-
gem 'minitest', '~> 4.7'
|
17
|
-
gem 'paperclip', '~> 3.5'
|
@@ -1,17 +0,0 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
platforms :jruby do
|
4
|
-
gem 'activerecord-jdbcsqlite3-adapter'
|
5
|
-
end
|
6
|
-
|
7
|
-
platforms :rbx do
|
8
|
-
gem 'json'
|
9
|
-
gem 'rubysl', '~> 2.0'
|
10
|
-
end
|
11
|
-
|
12
|
-
# See paperclip-meta.gemspec
|
13
|
-
gemspec path: '../..'
|
14
|
-
|
15
|
-
gem 'activerecord', '~> 4.1'
|
16
|
-
gem 'minitest', '~> 5.3'
|
17
|
-
gem 'paperclip', '~> 4.0'
|
data/spec/schema.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
ActiveRecord::Schema.define do
|
2
|
-
create_table :images do |t|
|
3
|
-
t.string :small_image_file_name
|
4
|
-
t.string :small_image_content_type
|
5
|
-
t.integer :small_image_updated_at
|
6
|
-
t.integer :small_image_file_size
|
7
|
-
t.string :small_image_meta
|
8
|
-
|
9
|
-
t.string :big_image_file_name
|
10
|
-
t.string :big_image_content_type
|
11
|
-
t.integer :big_image_updated_at
|
12
|
-
t.integer :big_image_file_size
|
13
|
-
t.string :big_image_meta
|
14
|
-
end
|
15
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'bundler/setup'
|
2
|
-
Bundler.require(:default)
|
3
|
-
require 'active_record'
|
4
|
-
require 'minitest/autorun'
|
5
|
-
require 'mocha/setup'
|
6
|
-
|
7
|
-
ActiveRecord::Base.establish_connection(
|
8
|
-
adapter: "sqlite3",
|
9
|
-
database: ":memory:"
|
10
|
-
)
|
11
|
-
|
12
|
-
if ENV["VERBOSE"]
|
13
|
-
ActiveRecord::Base.logger = Logger.new(STDERR)
|
14
|
-
else
|
15
|
-
Paperclip.options[:log] = false
|
16
|
-
end
|
17
|
-
|
18
|
-
load(File.join(File.dirname(__FILE__), 'schema.rb'))
|
19
|
-
|
20
|
-
ActiveRecord::Base.send(:include, Paperclip::Glue)
|
21
|
-
Paperclip::Meta::Railtie.insert
|
22
|
-
|
23
|
-
I18n.enforce_available_locales = true
|
24
|
-
|
25
|
-
class Image < ActiveRecord::Base
|
26
|
-
has_attached_file :small_image,
|
27
|
-
storage: :filesystem,
|
28
|
-
path: "./spec/tmp/:style/:id.:extension",
|
29
|
-
url: "./spec/tmp/:style/:id.extension"
|
30
|
-
|
31
|
-
has_attached_file :big_image,
|
32
|
-
storage: :filesystem,
|
33
|
-
path: "./spec/tmp/fixtures/tmp/:style/:id.:extension",
|
34
|
-
url: "./spec/tmp/fixtures/tmp/:style/:id.extension",
|
35
|
-
styles: { thumb: "100x100#", large: "500x500#" }
|
36
|
-
|
37
|
-
# paperclip 4.0 requires a validator
|
38
|
-
validates_attachment_content_type :small_image, content_type: /\Aimage/
|
39
|
-
validates_attachment_content_type :big_image, content_type: /\Aimage/
|
40
|
-
end
|
41
|
-
|
42
|
-
class ImageWithNoValidation < ActiveRecord::Base
|
43
|
-
self.table_name = :images
|
44
|
-
|
45
|
-
has_attached_file :small_image,
|
46
|
-
storage: :filesystem,
|
47
|
-
path: "./spec/tmp/:style/:id.:extension",
|
48
|
-
url: "./spec/tmp/:style/:id.extension"
|
49
|
-
|
50
|
-
if Paperclip::VERSION >= "4.0"
|
51
|
-
do_not_validate_attachment_file_type :small_image
|
52
|
-
end
|
53
|
-
end
|
data/tasks/reprocess_meta.rake
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
require 'paperclip/meta/process_meta_service'
|
2
|
-
|
3
|
-
namespace :paperclip_meta do
|
4
|
-
|
5
|
-
desc 'Regenerate only the paperclip-meta without reprocessing the images themselves'
|
6
|
-
task :reprocess => :environment do
|
7
|
-
Paperclip::Meta::ProcessMetaService.process!(Rails.logger)
|
8
|
-
end
|
9
|
-
end
|