paperclip 3.5.1 → 3.5.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of paperclip might be problematic. Click here for more details.
- data/Gemfile +9 -3
- data/NEWS +7 -0
- data/README.md +1 -1
- data/lib/paperclip.rb +1 -0
- data/lib/paperclip/attachment.rb +4 -4
- data/lib/paperclip/io_adapters/data_uri_adapter.rb +1 -1
- data/lib/paperclip/io_adapters/http_url_proxy_adapter.rb +15 -0
- data/lib/paperclip/validators/attachment_content_type_validator.rb +3 -1
- data/lib/paperclip/version.rb +1 -1
- data/paperclip.gemspec +2 -4
- data/test/helper.rb +6 -1
- data/test/io_adapters/data_uri_adapter_test.rb +15 -8
- data/test/io_adapters/http_url_proxy_adapter_test.rb +102 -0
- data/test/validators/attachment_content_type_validator_test.rb +5 -0
- data/test/validators/attachment_size_validator_test.rb +5 -0
- metadata +60 -45
- checksums.yaml +0 -15
data/Gemfile
CHANGED
@@ -2,6 +2,12 @@ source "https://rubygems.org"
|
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
-
|
6
|
-
gem
|
7
|
-
gem
|
5
|
+
platform :jruby do
|
6
|
+
gem 'jruby-openssl'
|
7
|
+
gem 'activerecord-jdbcsqlite3-adapter'
|
8
|
+
end
|
9
|
+
|
10
|
+
platform :ruby do
|
11
|
+
gem 'pry'
|
12
|
+
gem 'pry-debugger'
|
13
|
+
end
|
data/NEWS
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
New in 3.5.2:
|
2
|
+
|
3
|
+
* Security: Force cocaine to at least 0.5.3 to include a security fix
|
4
|
+
* Improvement: Fixed some README exmaples
|
5
|
+
* Feature: Added HTTP URL Proxy Adapter, can assign string URLs as attachments
|
6
|
+
* Improvement: Put validation errors on the base attribute and the sub-attribute
|
7
|
+
|
1
8
|
New in 3.5.1:
|
2
9
|
|
3
10
|
* Bug Fix: Returned the class-level `attachment_definitions` method for compatability.
|
data/README.md
CHANGED
@@ -233,7 +233,7 @@ afterwards, then assign manually:
|
|
233
233
|
```ruby
|
234
234
|
class Book < ActiveRecord::Base
|
235
235
|
has_attached_file :document, styles: {thumbnail: "60x60#"}
|
236
|
-
validates_attachment :document, content_type: "application/pdf"
|
236
|
+
validates_attachment :document, content_type: { content_type: "application/pdf" }
|
237
237
|
validates_something_else # Other validations that conflict with Paperclip's
|
238
238
|
end
|
239
239
|
|
data/lib/paperclip.rb
CHANGED
data/lib/paperclip/attachment.rb
CHANGED
@@ -476,10 +476,10 @@ module Paperclip
|
|
476
476
|
|
477
477
|
# called by storage after the writes are flushed and before @queued_for_writes is cleared
|
478
478
|
def after_flush_writes
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
479
|
+
@queued_for_write.each do |style, file|
|
480
|
+
file.close unless file.closed?
|
481
|
+
file.unlink if file.respond_to?(:unlink) && file.path.present? && File.exist?(file.path)
|
482
|
+
end
|
483
483
|
end
|
484
484
|
|
485
485
|
# You can either specifiy :restricted_characters or you can define your own
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Paperclip
|
2
|
+
class HttpUrlProxyAdapter < UriAdapter
|
3
|
+
|
4
|
+
REGEXP = /^https?:\/\//
|
5
|
+
|
6
|
+
def initialize(target)
|
7
|
+
super(URI(target))
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
Paperclip.io_adapters.register Paperclip::HttpUrlProxyAdapter do |target|
|
14
|
+
String === target && target =~ Paperclip::HttpUrlProxyAdapter::REGEXP
|
15
|
+
end
|
@@ -17,7 +17,9 @@ module Paperclip
|
|
17
17
|
validate_blacklist(record, attribute, value)
|
18
18
|
|
19
19
|
if record.errors.include? attribute
|
20
|
-
record.errors.
|
20
|
+
record.errors[attribute].each do |error|
|
21
|
+
record.errors.add base_attribute, error
|
22
|
+
end
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
data/lib/paperclip/version.rb
CHANGED
data/paperclip.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
|
29
29
|
s.add_dependency('activemodel', '>= 3.0.0')
|
30
30
|
s.add_dependency('activesupport', '>= 3.0.0')
|
31
|
-
s.add_dependency('cocaine', '~> 0.5.
|
31
|
+
s.add_dependency('cocaine', '~> 0.5.3')
|
32
32
|
s.add_dependency('mime-types')
|
33
33
|
|
34
34
|
s.add_development_dependency('activerecord', '>= 3.0.0')
|
@@ -44,9 +44,7 @@ Gem::Specification.new do |s|
|
|
44
44
|
# Ruby version < 1.9.3 can't install capybara > 2.0.3.
|
45
45
|
s.add_development_dependency('capybara', '= 2.0.3')
|
46
46
|
s.add_development_dependency('bundler')
|
47
|
-
s.add_development_dependency('fog', '
|
48
|
-
s.add_development_dependency('pry')
|
49
|
-
s.add_development_dependency('pry-debugger')
|
47
|
+
s.add_development_dependency('fog', '~> 1.0')
|
50
48
|
s.add_development_dependency('launchy')
|
51
49
|
s.add_development_dependency('rake')
|
52
50
|
s.add_development_dependency('fakeweb')
|
data/test/helper.rb
CHANGED
@@ -13,7 +13,12 @@ require 'shoulda/context'
|
|
13
13
|
require 'mime/types'
|
14
14
|
require 'pathname'
|
15
15
|
require 'ostruct'
|
16
|
-
|
16
|
+
|
17
|
+
begin
|
18
|
+
require 'pry'
|
19
|
+
rescue LoadError
|
20
|
+
# Pry is not available, just ignore.
|
21
|
+
end
|
17
22
|
|
18
23
|
puts "Testing against version #{ActiveRecord::VERSION::STRING}"
|
19
24
|
|
@@ -3,7 +3,7 @@ require './test/helper'
|
|
3
3
|
class DataUriAdapterTest < Test::Unit::TestCase
|
4
4
|
context "a new instance" do
|
5
5
|
setup do
|
6
|
-
@contents = "data:image/png;base64
|
6
|
+
@contents = "data:image/png;base64,#{original_base64_content}"
|
7
7
|
@subject = Paperclip.io_adapters.for(@contents)
|
8
8
|
end
|
9
9
|
|
@@ -16,11 +16,14 @@ class DataUriAdapterTest < Test::Unit::TestCase
|
|
16
16
|
end
|
17
17
|
|
18
18
|
should "return the size of the data" do
|
19
|
-
assert_equal
|
19
|
+
assert_equal 4456, @subject.size
|
20
20
|
end
|
21
21
|
|
22
|
-
should "generate
|
23
|
-
assert_equal
|
22
|
+
should "generate a correct MD5 hash of the contents" do
|
23
|
+
assert_equal(
|
24
|
+
Digest::MD5.hexdigest(Base64.decode64(original_base64_content)),
|
25
|
+
@subject.fingerprint
|
26
|
+
)
|
24
27
|
end
|
25
28
|
|
26
29
|
should "generate correct fingerprint after read" do
|
@@ -32,10 +35,6 @@ class DataUriAdapterTest < Test::Unit::TestCase
|
|
32
35
|
assert_equal @subject.fingerprint, @subject.fingerprint
|
33
36
|
end
|
34
37
|
|
35
|
-
should "return the data contained in the StringIO" do
|
36
|
-
assert_equal "test", @subject.read
|
37
|
-
end
|
38
|
-
|
39
38
|
should 'accept a content_type' do
|
40
39
|
@subject.content_type = 'image/png'
|
41
40
|
assert_equal 'image/png', @subject.content_type
|
@@ -57,4 +56,12 @@ class DataUriAdapterTest < Test::Unit::TestCase
|
|
57
56
|
end
|
58
57
|
|
59
58
|
end
|
59
|
+
|
60
|
+
def original_base64_content
|
61
|
+
Base64.encode64(original_file_contents)
|
62
|
+
end
|
63
|
+
|
64
|
+
def original_file_contents
|
65
|
+
@original_file_contents ||= File.read(fixture_file('5k.png'))
|
66
|
+
end
|
60
67
|
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require './test/helper'
|
2
|
+
|
3
|
+
class HttpUrlProxyAdapterTest < Test::Unit::TestCase
|
4
|
+
context "a new instance" do
|
5
|
+
setup do
|
6
|
+
@open_return = StringIO.new("xxx")
|
7
|
+
@open_return.stubs(:content_type).returns("image/png")
|
8
|
+
Paperclip::HttpUrlProxyAdapter.any_instance.stubs(:download_content).returns(@open_return)
|
9
|
+
@url = "http://thoughtbot.com/images/thoughtbot-logo.png"
|
10
|
+
@subject = Paperclip.io_adapters.for(@url)
|
11
|
+
end
|
12
|
+
|
13
|
+
teardown do
|
14
|
+
@subject.close
|
15
|
+
end
|
16
|
+
|
17
|
+
should "return a file name" do
|
18
|
+
assert_equal "thoughtbot-logo.png", @subject.original_filename
|
19
|
+
end
|
20
|
+
|
21
|
+
should 'close open handle after reading' do
|
22
|
+
assert_equal true, @open_return.closed?
|
23
|
+
end
|
24
|
+
|
25
|
+
should "return a content type" do
|
26
|
+
assert_equal "image/png", @subject.content_type
|
27
|
+
end
|
28
|
+
|
29
|
+
should "return the size of the data" do
|
30
|
+
assert_equal @open_return.size, @subject.size
|
31
|
+
end
|
32
|
+
|
33
|
+
should "generate an MD5 hash of the contents" do
|
34
|
+
assert_equal Digest::MD5.hexdigest("xxx"), @subject.fingerprint
|
35
|
+
end
|
36
|
+
|
37
|
+
should "generate correct fingerprint after read" do
|
38
|
+
fingerprint = Digest::MD5.hexdigest(@subject.read)
|
39
|
+
assert_equal fingerprint, @subject.fingerprint
|
40
|
+
end
|
41
|
+
|
42
|
+
should "generate same fingerprint" do
|
43
|
+
assert_equal @subject.fingerprint, @subject.fingerprint
|
44
|
+
end
|
45
|
+
|
46
|
+
should "return the data contained in the StringIO" do
|
47
|
+
assert_equal "xxx", @subject.read
|
48
|
+
end
|
49
|
+
|
50
|
+
should 'accept a content_type' do
|
51
|
+
@subject.content_type = 'image/png'
|
52
|
+
assert_equal 'image/png', @subject.content_type
|
53
|
+
end
|
54
|
+
|
55
|
+
should 'accept an original_filename' do
|
56
|
+
@subject.original_filename = 'image.png'
|
57
|
+
assert_equal 'image.png', @subject.original_filename
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context "a url with query params" do
|
62
|
+
setup do
|
63
|
+
Paperclip::HttpUrlProxyAdapter.any_instance.stubs(:download_content).returns(StringIO.new("x"))
|
64
|
+
@url = "https://github.com/thoughtbot/paperclip?file=test"
|
65
|
+
@subject = Paperclip.io_adapters.for(@url)
|
66
|
+
end
|
67
|
+
|
68
|
+
teardown do
|
69
|
+
@subject.close
|
70
|
+
end
|
71
|
+
|
72
|
+
should "return a file name" do
|
73
|
+
assert_equal "paperclip", @subject.original_filename
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context "a url with restricted characters in the filename" do
|
78
|
+
setup do
|
79
|
+
Paperclip::HttpUrlProxyAdapter.any_instance.stubs(:download_content).returns(StringIO.new("x"))
|
80
|
+
@url = "https://github.com/thoughtbot/paper:clip.jpg"
|
81
|
+
@subject = Paperclip.io_adapters.for(@url)
|
82
|
+
end
|
83
|
+
|
84
|
+
teardown do
|
85
|
+
begin
|
86
|
+
@subject.close
|
87
|
+
rescue Exception => e
|
88
|
+
binding.pry
|
89
|
+
true
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
should "not generate filenames that include restricted characters" do
|
94
|
+
assert_equal "paper_clip.jpg", @subject.original_filename
|
95
|
+
end
|
96
|
+
|
97
|
+
should "not generate paths that include restricted characters" do
|
98
|
+
assert_no_match /:/, @subject.path
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
@@ -61,6 +61,11 @@ class AttachmentContentTypeValidatorTest < Test::Unit::TestCase
|
|
61
61
|
assert @dummy.errors[:avatar].present?,
|
62
62
|
"Error not added to base attribute"
|
63
63
|
end
|
64
|
+
|
65
|
+
should "add error to base object as a string" do
|
66
|
+
assert_kind_of String, @dummy.errors[:avatar].first,
|
67
|
+
"Error added to base attribute as something other than a String"
|
68
|
+
end
|
64
69
|
end
|
65
70
|
|
66
71
|
context "with a successful validation" do
|
@@ -45,6 +45,11 @@ class AttachmentSizeValidatorTest < Test::Unit::TestCase
|
|
45
45
|
"Error not added to base attribute"
|
46
46
|
end
|
47
47
|
|
48
|
+
should "add error to base object as a string" do
|
49
|
+
assert_kind_of String, @dummy.errors[:avatar].first,
|
50
|
+
"Error added to base attribute as something other than a String"
|
51
|
+
end
|
52
|
+
|
48
53
|
if options[:message]
|
49
54
|
should "return a correct error message" do
|
50
55
|
assert_includes @dummy.errors[:avatar_file_size], options[:message]
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paperclip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.5.
|
4
|
+
version: 3.5.2
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Jon Yurek
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-
|
12
|
+
date: 2013-10-22 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: activemodel
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,6 +30,7 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: activesupport
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,20 +46,23 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: cocaine
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - ~>
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.5.
|
53
|
+
version: 0.5.3
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - ~>
|
53
60
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.5.
|
61
|
+
version: 0.5.3
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: mime-types
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,6 +70,7 @@ dependencies:
|
|
62
70
|
type: :runtime
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
@@ -69,6 +78,7 @@ dependencies:
|
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: activerecord
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
83
|
- - ! '>='
|
74
84
|
- !ruby/object:Gem::Version
|
@@ -76,6 +86,7 @@ dependencies:
|
|
76
86
|
type: :development
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
91
|
- - ! '>='
|
81
92
|
- !ruby/object:Gem::Version
|
@@ -83,6 +94,7 @@ dependencies:
|
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: shoulda
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
99
|
- - ! '>='
|
88
100
|
- !ruby/object:Gem::Version
|
@@ -90,6 +102,7 @@ dependencies:
|
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
107
|
- - ! '>='
|
95
108
|
- !ruby/object:Gem::Version
|
@@ -97,6 +110,7 @@ dependencies:
|
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
111
|
name: appraisal
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
100
114
|
requirements:
|
101
115
|
- - ! '>='
|
102
116
|
- !ruby/object:Gem::Version
|
@@ -104,6 +118,7 @@ dependencies:
|
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
107
122
|
requirements:
|
108
123
|
- - ! '>='
|
109
124
|
- !ruby/object:Gem::Version
|
@@ -111,6 +126,7 @@ dependencies:
|
|
111
126
|
- !ruby/object:Gem::Dependency
|
112
127
|
name: mocha
|
113
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
114
130
|
requirements:
|
115
131
|
- - ! '>='
|
116
132
|
- !ruby/object:Gem::Version
|
@@ -118,6 +134,7 @@ dependencies:
|
|
118
134
|
type: :development
|
119
135
|
prerelease: false
|
120
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
121
138
|
requirements:
|
122
139
|
- - ! '>='
|
123
140
|
- !ruby/object:Gem::Version
|
@@ -125,6 +142,7 @@ dependencies:
|
|
125
142
|
- !ruby/object:Gem::Dependency
|
126
143
|
name: aws-sdk
|
127
144
|
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
128
146
|
requirements:
|
129
147
|
- - ! '>='
|
130
148
|
- !ruby/object:Gem::Version
|
@@ -132,6 +150,7 @@ dependencies:
|
|
132
150
|
type: :development
|
133
151
|
prerelease: false
|
134
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
135
154
|
requirements:
|
136
155
|
- - ! '>='
|
137
156
|
- !ruby/object:Gem::Version
|
@@ -139,6 +158,7 @@ dependencies:
|
|
139
158
|
- !ruby/object:Gem::Dependency
|
140
159
|
name: bourne
|
141
160
|
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
142
162
|
requirements:
|
143
163
|
- - ! '>='
|
144
164
|
- !ruby/object:Gem::Version
|
@@ -146,6 +166,7 @@ dependencies:
|
|
146
166
|
type: :development
|
147
167
|
prerelease: false
|
148
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
149
170
|
requirements:
|
150
171
|
- - ! '>='
|
151
172
|
- !ruby/object:Gem::Version
|
@@ -153,6 +174,7 @@ dependencies:
|
|
153
174
|
- !ruby/object:Gem::Dependency
|
154
175
|
name: sqlite3
|
155
176
|
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
156
178
|
requirements:
|
157
179
|
- - ~>
|
158
180
|
- !ruby/object:Gem::Version
|
@@ -160,6 +182,7 @@ dependencies:
|
|
160
182
|
type: :development
|
161
183
|
prerelease: false
|
162
184
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
163
186
|
requirements:
|
164
187
|
- - ~>
|
165
188
|
- !ruby/object:Gem::Version
|
@@ -167,6 +190,7 @@ dependencies:
|
|
167
190
|
- !ruby/object:Gem::Dependency
|
168
191
|
name: cucumber
|
169
192
|
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
170
194
|
requirements:
|
171
195
|
- - ~>
|
172
196
|
- !ruby/object:Gem::Version
|
@@ -174,6 +198,7 @@ dependencies:
|
|
174
198
|
type: :development
|
175
199
|
prerelease: false
|
176
200
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
177
202
|
requirements:
|
178
203
|
- - ~>
|
179
204
|
- !ruby/object:Gem::Version
|
@@ -181,6 +206,7 @@ dependencies:
|
|
181
206
|
- !ruby/object:Gem::Dependency
|
182
207
|
name: aruba
|
183
208
|
requirement: !ruby/object:Gem::Requirement
|
209
|
+
none: false
|
184
210
|
requirements:
|
185
211
|
- - ! '>='
|
186
212
|
- !ruby/object:Gem::Version
|
@@ -188,6 +214,7 @@ dependencies:
|
|
188
214
|
type: :development
|
189
215
|
prerelease: false
|
190
216
|
version_requirements: !ruby/object:Gem::Requirement
|
217
|
+
none: false
|
191
218
|
requirements:
|
192
219
|
- - ! '>='
|
193
220
|
- !ruby/object:Gem::Version
|
@@ -195,6 +222,7 @@ dependencies:
|
|
195
222
|
- !ruby/object:Gem::Dependency
|
196
223
|
name: nokogiri
|
197
224
|
requirement: !ruby/object:Gem::Requirement
|
225
|
+
none: false
|
198
226
|
requirements:
|
199
227
|
- - ! '>='
|
200
228
|
- !ruby/object:Gem::Version
|
@@ -202,6 +230,7 @@ dependencies:
|
|
202
230
|
type: :development
|
203
231
|
prerelease: false
|
204
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
none: false
|
205
234
|
requirements:
|
206
235
|
- - ! '>='
|
207
236
|
- !ruby/object:Gem::Version
|
@@ -209,6 +238,7 @@ dependencies:
|
|
209
238
|
- !ruby/object:Gem::Dependency
|
210
239
|
name: capybara
|
211
240
|
requirement: !ruby/object:Gem::Requirement
|
241
|
+
none: false
|
212
242
|
requirements:
|
213
243
|
- - '='
|
214
244
|
- !ruby/object:Gem::Version
|
@@ -216,6 +246,7 @@ dependencies:
|
|
216
246
|
type: :development
|
217
247
|
prerelease: false
|
218
248
|
version_requirements: !ruby/object:Gem::Requirement
|
249
|
+
none: false
|
219
250
|
requirements:
|
220
251
|
- - '='
|
221
252
|
- !ruby/object:Gem::Version
|
@@ -223,6 +254,7 @@ dependencies:
|
|
223
254
|
- !ruby/object:Gem::Dependency
|
224
255
|
name: bundler
|
225
256
|
requirement: !ruby/object:Gem::Requirement
|
257
|
+
none: false
|
226
258
|
requirements:
|
227
259
|
- - ! '>='
|
228
260
|
- !ruby/object:Gem::Version
|
@@ -230,6 +262,7 @@ dependencies:
|
|
230
262
|
type: :development
|
231
263
|
prerelease: false
|
232
264
|
version_requirements: !ruby/object:Gem::Requirement
|
265
|
+
none: false
|
233
266
|
requirements:
|
234
267
|
- - ! '>='
|
235
268
|
- !ruby/object:Gem::Version
|
@@ -237,54 +270,23 @@ dependencies:
|
|
237
270
|
- !ruby/object:Gem::Dependency
|
238
271
|
name: fog
|
239
272
|
requirement: !ruby/object:Gem::Requirement
|
273
|
+
none: false
|
240
274
|
requirements:
|
241
|
-
- -
|
242
|
-
- !ruby/object:Gem::Version
|
243
|
-
version: 1.4.0
|
244
|
-
- - <
|
245
|
-
- !ruby/object:Gem::Version
|
246
|
-
version: 1.7.0
|
247
|
-
type: :development
|
248
|
-
prerelease: false
|
249
|
-
version_requirements: !ruby/object:Gem::Requirement
|
250
|
-
requirements:
|
251
|
-
- - ! '>='
|
252
|
-
- !ruby/object:Gem::Version
|
253
|
-
version: 1.4.0
|
254
|
-
- - <
|
255
|
-
- !ruby/object:Gem::Version
|
256
|
-
version: 1.7.0
|
257
|
-
- !ruby/object:Gem::Dependency
|
258
|
-
name: pry
|
259
|
-
requirement: !ruby/object:Gem::Requirement
|
260
|
-
requirements:
|
261
|
-
- - ! '>='
|
262
|
-
- !ruby/object:Gem::Version
|
263
|
-
version: '0'
|
264
|
-
type: :development
|
265
|
-
prerelease: false
|
266
|
-
version_requirements: !ruby/object:Gem::Requirement
|
267
|
-
requirements:
|
268
|
-
- - ! '>='
|
269
|
-
- !ruby/object:Gem::Version
|
270
|
-
version: '0'
|
271
|
-
- !ruby/object:Gem::Dependency
|
272
|
-
name: pry-debugger
|
273
|
-
requirement: !ruby/object:Gem::Requirement
|
274
|
-
requirements:
|
275
|
-
- - ! '>='
|
275
|
+
- - ~>
|
276
276
|
- !ruby/object:Gem::Version
|
277
|
-
version: '0'
|
277
|
+
version: '1.0'
|
278
278
|
type: :development
|
279
279
|
prerelease: false
|
280
280
|
version_requirements: !ruby/object:Gem::Requirement
|
281
|
+
none: false
|
281
282
|
requirements:
|
282
|
-
- -
|
283
|
+
- - ~>
|
283
284
|
- !ruby/object:Gem::Version
|
284
|
-
version: '0'
|
285
|
+
version: '1.0'
|
285
286
|
- !ruby/object:Gem::Dependency
|
286
287
|
name: launchy
|
287
288
|
requirement: !ruby/object:Gem::Requirement
|
289
|
+
none: false
|
288
290
|
requirements:
|
289
291
|
- - ! '>='
|
290
292
|
- !ruby/object:Gem::Version
|
@@ -292,6 +294,7 @@ dependencies:
|
|
292
294
|
type: :development
|
293
295
|
prerelease: false
|
294
296
|
version_requirements: !ruby/object:Gem::Requirement
|
297
|
+
none: false
|
295
298
|
requirements:
|
296
299
|
- - ! '>='
|
297
300
|
- !ruby/object:Gem::Version
|
@@ -299,6 +302,7 @@ dependencies:
|
|
299
302
|
- !ruby/object:Gem::Dependency
|
300
303
|
name: rake
|
301
304
|
requirement: !ruby/object:Gem::Requirement
|
305
|
+
none: false
|
302
306
|
requirements:
|
303
307
|
- - ! '>='
|
304
308
|
- !ruby/object:Gem::Version
|
@@ -306,6 +310,7 @@ dependencies:
|
|
306
310
|
type: :development
|
307
311
|
prerelease: false
|
308
312
|
version_requirements: !ruby/object:Gem::Requirement
|
313
|
+
none: false
|
309
314
|
requirements:
|
310
315
|
- - ! '>='
|
311
316
|
- !ruby/object:Gem::Version
|
@@ -313,6 +318,7 @@ dependencies:
|
|
313
318
|
- !ruby/object:Gem::Dependency
|
314
319
|
name: fakeweb
|
315
320
|
requirement: !ruby/object:Gem::Requirement
|
321
|
+
none: false
|
316
322
|
requirements:
|
317
323
|
- - ! '>='
|
318
324
|
- !ruby/object:Gem::Version
|
@@ -320,6 +326,7 @@ dependencies:
|
|
320
326
|
type: :development
|
321
327
|
prerelease: false
|
322
328
|
version_requirements: !ruby/object:Gem::Requirement
|
329
|
+
none: false
|
323
330
|
requirements:
|
324
331
|
- - ! '>='
|
325
332
|
- !ruby/object:Gem::Version
|
@@ -327,6 +334,7 @@ dependencies:
|
|
327
334
|
- !ruby/object:Gem::Dependency
|
328
335
|
name: railties
|
329
336
|
requirement: !ruby/object:Gem::Requirement
|
337
|
+
none: false
|
330
338
|
requirements:
|
331
339
|
- - ! '>='
|
332
340
|
- !ruby/object:Gem::Version
|
@@ -334,6 +342,7 @@ dependencies:
|
|
334
342
|
type: :development
|
335
343
|
prerelease: false
|
336
344
|
version_requirements: !ruby/object:Gem::Requirement
|
345
|
+
none: false
|
337
346
|
requirements:
|
338
347
|
- - ! '>='
|
339
348
|
- !ruby/object:Gem::Version
|
@@ -341,6 +350,7 @@ dependencies:
|
|
341
350
|
- !ruby/object:Gem::Dependency
|
342
351
|
name: actionmailer
|
343
352
|
requirement: !ruby/object:Gem::Requirement
|
353
|
+
none: false
|
344
354
|
requirements:
|
345
355
|
- - ! '>='
|
346
356
|
- !ruby/object:Gem::Version
|
@@ -348,6 +358,7 @@ dependencies:
|
|
348
358
|
type: :development
|
349
359
|
prerelease: false
|
350
360
|
version_requirements: !ruby/object:Gem::Requirement
|
361
|
+
none: false
|
351
362
|
requirements:
|
352
363
|
- - ! '>='
|
353
364
|
- !ruby/object:Gem::Version
|
@@ -416,6 +427,7 @@ files:
|
|
416
427
|
- lib/paperclip/io_adapters/data_uri_adapter.rb
|
417
428
|
- lib/paperclip/io_adapters/empty_string_adapter.rb
|
418
429
|
- lib/paperclip/io_adapters/file_adapter.rb
|
430
|
+
- lib/paperclip/io_adapters/http_url_proxy_adapter.rb
|
419
431
|
- lib/paperclip/io_adapters/identity_adapter.rb
|
420
432
|
- lib/paperclip/io_adapters/nil_adapter.rb
|
421
433
|
- lib/paperclip/io_adapters/registry.rb
|
@@ -485,6 +497,7 @@ files:
|
|
485
497
|
- test/io_adapters/data_uri_adapter_test.rb
|
486
498
|
- test/io_adapters/empty_string_adapter_test.rb
|
487
499
|
- test/io_adapters/file_adapter_test.rb
|
500
|
+
- test/io_adapters/http_url_proxy_adapter_test.rb
|
488
501
|
- test/io_adapters/identity_adapter_test.rb
|
489
502
|
- test/io_adapters/nil_adapter_test.rb
|
490
503
|
- test/io_adapters/registry_test.rb
|
@@ -521,7 +534,6 @@ files:
|
|
521
534
|
homepage: https://github.com/thoughtbot/paperclip
|
522
535
|
licenses:
|
523
536
|
- MIT
|
524
|
-
metadata: {}
|
525
537
|
post_install_message: ! "##################################################\n# NOTE
|
526
538
|
FOR UPGRADING FROM PRE-3.0 VERSION #\n##################################################\n\nPaperclip
|
527
539
|
3.0 introduces a non-backward compatible change in your attachment\npath. This will
|
@@ -534,11 +546,13 @@ rdoc_options: []
|
|
534
546
|
require_paths:
|
535
547
|
- lib
|
536
548
|
required_ruby_version: !ruby/object:Gem::Requirement
|
549
|
+
none: false
|
537
550
|
requirements:
|
538
551
|
- - ! '>='
|
539
552
|
- !ruby/object:Gem::Version
|
540
553
|
version: 1.9.2
|
541
554
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
555
|
+
none: false
|
542
556
|
requirements:
|
543
557
|
- - ! '>='
|
544
558
|
- !ruby/object:Gem::Version
|
@@ -546,9 +560,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
546
560
|
requirements:
|
547
561
|
- ImageMagick
|
548
562
|
rubyforge_project: paperclip
|
549
|
-
rubygems_version:
|
563
|
+
rubygems_version: 1.8.23
|
550
564
|
signing_key:
|
551
|
-
specification_version:
|
565
|
+
specification_version: 3
|
552
566
|
summary: File attachments as attributes for ActiveRecord
|
553
567
|
test_files:
|
554
568
|
- features/basic_integration.feature
|
@@ -603,6 +617,7 @@ test_files:
|
|
603
617
|
- test/io_adapters/data_uri_adapter_test.rb
|
604
618
|
- test/io_adapters/empty_string_adapter_test.rb
|
605
619
|
- test/io_adapters/file_adapter_test.rb
|
620
|
+
- test/io_adapters/http_url_proxy_adapter_test.rb
|
606
621
|
- test/io_adapters/identity_adapter_test.rb
|
607
622
|
- test/io_adapters/nil_adapter_test.rb
|
608
623
|
- test/io_adapters/registry_test.rb
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
MDk3MDQ5M2FjY2Q3OTIzMDQzNTg4YzE3OGMwMTU1YTBiZGM0ZDVmNg==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MDkwNWQ0M2I2MzAwMDk0NDA4NDdhZDM0ZTFiODg3MjZlY2ZmYTU1NA==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
Y2U4ZDI0Y2Q3MGE2NTJmZTQ5MDZlODJiZDIzOTJlNjM5MDAwZDI5Yjk5NmYx
|
10
|
-
MWRmNjc1YjQ3MmI2YzMwMzU2ODIwZGI2NTcyZjNhY2I3YWVhOWViNTZmOTZj
|
11
|
-
Yjc1ZDI1OTExNWE3MTgxN2Y2Nzc5YzdjODU1ZjA1ZDk3ZjNjOGM=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
Y2RkZGY4MjViZTVjOTczMmRiZTNjYjBhYzMyNTRkODczOWVkMjdmMzU0ZDY0
|
14
|
-
ZmRkNGNiNGM2MjRkMmNjYTU4ODQzZTQwZmY5YmVmMGM1ZmE3NTZiYzRjMzIy
|
15
|
-
NDdkY2JkNDFmNTNhNDk0ZjAxNDZhNWNkZDk3ZTU0YjAyNzI5ZDM=
|