paperclip 5.2.1 → 6.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/issue_template.md +3 -0
- data/MIGRATING-ES.md +317 -0
- data/MIGRATING.md +375 -0
- data/NEWS +36 -0
- data/README.md +52 -18
- data/UPGRADING +3 -3
- data/features/step_definitions/attachment_steps.rb +10 -10
- data/features/step_definitions/rails_steps.rb +1 -1
- data/lib/generators/paperclip/paperclip_generator.rb +9 -1
- data/lib/generators/paperclip/templates/paperclip_migration.rb.erb +1 -1
- data/lib/paperclip/attachment.rb +19 -6
- data/lib/paperclip/file_command_content_type_detector.rb +1 -1
- data/lib/paperclip/filename_cleaner.rb +0 -1
- data/lib/paperclip/geometry_detector_factory.rb +3 -3
- data/lib/paperclip/helpers.rb +3 -3
- data/lib/paperclip/interpolations.rb +6 -1
- data/lib/paperclip/io_adapters/abstract_adapter.rb +11 -6
- data/lib/paperclip/io_adapters/attachment_adapter.rb +7 -1
- data/lib/paperclip/io_adapters/http_url_proxy_adapter.rb +2 -1
- data/lib/paperclip/io_adapters/uri_adapter.rb +8 -6
- data/lib/paperclip/logger.rb +1 -1
- data/lib/paperclip/media_type_spoof_detector.rb +11 -7
- data/lib/paperclip/processor.rb +10 -2
- data/lib/paperclip/schema.rb +1 -1
- data/lib/paperclip/storage/fog.rb +3 -2
- data/lib/paperclip/storage/s3.rb +8 -16
- data/lib/paperclip/style.rb +0 -1
- data/lib/paperclip/thumbnail.rb +8 -5
- data/lib/paperclip/url_generator.rb +1 -0
- data/lib/paperclip/validators/media_type_spoof_detection_validator.rb +4 -0
- data/lib/paperclip/version.rb +1 -1
- data/lib/paperclip.rb +2 -1
- data/paperclip.gemspec +2 -2
- data/spec/paperclip/attachment_processing_spec.rb +0 -1
- data/spec/paperclip/attachment_spec.rb +17 -2
- data/spec/paperclip/content_type_detector_spec.rb +1 -1
- data/spec/paperclip/file_command_content_type_detector_spec.rb +15 -1
- data/spec/paperclip/filename_cleaner_spec.rb +0 -1
- data/spec/paperclip/integration_spec.rb +41 -5
- data/spec/paperclip/interpolations_spec.rb +9 -0
- data/spec/paperclip/io_adapters/abstract_adapter_spec.rb +59 -0
- data/spec/paperclip/io_adapters/http_url_proxy_adapter_spec.rb +33 -16
- data/spec/paperclip/io_adapters/uri_adapter_spec.rb +56 -8
- data/spec/paperclip/matchers/validate_attachment_size_matcher_spec.rb +1 -1
- data/spec/paperclip/media_type_spoof_detector_spec.rb +41 -0
- data/spec/paperclip/paperclip_spec.rb +13 -13
- data/spec/paperclip/processor_spec.rb +4 -4
- data/spec/paperclip/schema_spec.rb +46 -46
- data/spec/paperclip/storage/fog_spec.rb +5 -0
- data/spec/paperclip/storage/s3_spec.rb +6 -6
- data/spec/paperclip/style_spec.rb +0 -1
- data/spec/paperclip/thumbnail_spec.rb +8 -6
- data/spec/paperclip/url_generator_spec.rb +0 -1
- data/spec/spec_helper.rb +0 -1
- data/spec/support/model_reconstruction.rb +2 -2
- metadata +120 -20
- data/spec/support/conditional_filter_helper.rb +0 -5
@@ -58,6 +58,32 @@ describe Paperclip::MediaTypeSpoofDetector do
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
+
context "GIF file named without extension, but we're told GIF" do
|
62
|
+
let(:file) { File.open(fixture_file("animated")) }
|
63
|
+
let(:spoofed?) do
|
64
|
+
Paperclip::MediaTypeSpoofDetector.
|
65
|
+
using(file, "animated", "image/gif").
|
66
|
+
spoofed?
|
67
|
+
end
|
68
|
+
|
69
|
+
it "accepts the file" do
|
70
|
+
assert !spoofed?
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context "GIF file named without extension, but we're told HTML" do
|
75
|
+
let(:file) { File.open(fixture_file("animated")) }
|
76
|
+
let(:spoofed?) do
|
77
|
+
Paperclip::MediaTypeSpoofDetector.
|
78
|
+
using(file, "animated", "text/html").
|
79
|
+
spoofed?
|
80
|
+
end
|
81
|
+
|
82
|
+
it "rejects the file" do
|
83
|
+
assert spoofed?
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
61
87
|
it "does not reject if content_type is empty but otherwise checks out" do
|
62
88
|
file = File.open(fixture_file("empty.html"))
|
63
89
|
assert ! Paperclip::MediaTypeSpoofDetector.using(file, "empty.html", "").spoofed?
|
@@ -76,4 +102,19 @@ describe Paperclip::MediaTypeSpoofDetector do
|
|
76
102
|
Paperclip.options[:content_type_mappings] = {}
|
77
103
|
end
|
78
104
|
end
|
105
|
+
|
106
|
+
context "#type_from_file_command" do
|
107
|
+
let(:file) { File.new(fixture_file("empty.html")) }
|
108
|
+
let(:detector) { Paperclip::MediaTypeSpoofDetector.new(file, "html", "") }
|
109
|
+
|
110
|
+
it "does work with the output of old versions of file" do
|
111
|
+
Paperclip.stubs(:run).returns("text/html charset=us-ascii")
|
112
|
+
expect(detector.send(:type_from_file_command)).to eq("text/html")
|
113
|
+
end
|
114
|
+
|
115
|
+
it "does work with the output of new versions of file" do
|
116
|
+
Paperclip.stubs(:run).returns("text/html; charset=us-ascii")
|
117
|
+
expect(detector.send(:type_from_file_command)).to eq("text/html")
|
118
|
+
end
|
119
|
+
end
|
79
120
|
end
|
@@ -4,40 +4,40 @@ describe Paperclip do
|
|
4
4
|
context ".run" do
|
5
5
|
before do
|
6
6
|
Paperclip.options[:log_command] = false
|
7
|
-
|
8
|
-
@original_command_line_path =
|
7
|
+
Terrapin::CommandLine.expects(:new).with("convert", "stuff", {}).returns(stub(:run))
|
8
|
+
@original_command_line_path = Terrapin::CommandLine.path
|
9
9
|
end
|
10
10
|
|
11
11
|
after do
|
12
12
|
Paperclip.options[:log_command] = true
|
13
|
-
|
13
|
+
Terrapin::CommandLine.path = @original_command_line_path
|
14
14
|
end
|
15
15
|
|
16
|
-
it "runs the command with
|
16
|
+
it "runs the command with Terrapin" do
|
17
17
|
Paperclip.run("convert", "stuff")
|
18
18
|
end
|
19
19
|
|
20
|
-
it "saves
|
21
|
-
|
20
|
+
it "saves Terrapin::CommandLine.path that set before" do
|
21
|
+
Terrapin::CommandLine.path = "/opt/my_app/bin"
|
22
22
|
Paperclip.run("convert", "stuff")
|
23
|
-
expect(
|
23
|
+
expect(Terrapin::CommandLine.path).to match("/opt/my_app/bin")
|
24
24
|
end
|
25
25
|
|
26
|
-
it "does not duplicate
|
27
|
-
|
28
|
-
|
26
|
+
it "does not duplicate Terrapin::CommandLine.path on multiple runs" do
|
27
|
+
Terrapin::CommandLine.expects(:new).with("convert", "more_stuff", {}).returns(stub(:run))
|
28
|
+
Terrapin::CommandLine.path = nil
|
29
29
|
Paperclip.options[:command_path] = "/opt/my_app/bin"
|
30
30
|
Paperclip.run("convert", "stuff")
|
31
31
|
Paperclip.run("convert", "more_stuff")
|
32
32
|
|
33
33
|
cmd_path = Paperclip.options[:command_path]
|
34
|
-
assert_equal 1,
|
34
|
+
assert_equal 1, Terrapin::CommandLine.path.scan(cmd_path).count
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'does not raise errors when doing a lot of running' do
|
39
39
|
Paperclip.options[:command_path] = ["/usr/local/bin"] * 1024
|
40
|
-
|
40
|
+
Terrapin::CommandLine.path = "/something/else"
|
41
41
|
100.times do |x|
|
42
42
|
Paperclip.run("echo", x.to_s)
|
43
43
|
end
|
@@ -63,7 +63,7 @@ describe Paperclip do
|
|
63
63
|
context "Calling Paperclip.run with a logger" do
|
64
64
|
it "passes the defined logger if :log_command is set" do
|
65
65
|
Paperclip.options[:log_command] = true
|
66
|
-
|
66
|
+
Terrapin::CommandLine.expects(:new).with("convert", "stuff", logger: Paperclip.logger).returns(stub(:run))
|
67
67
|
Paperclip.run("convert", "stuff")
|
68
68
|
end
|
69
69
|
end
|
@@ -9,17 +9,17 @@ describe Paperclip::Processor do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
context "Calling #convert" do
|
12
|
-
it "runs the convert command with
|
12
|
+
it "runs the convert command with Terrapin" do
|
13
13
|
Paperclip.options[:log_command] = false
|
14
|
-
|
14
|
+
Terrapin::CommandLine.expects(:new).with("convert", "stuff", {}).returns(stub(:run))
|
15
15
|
Paperclip::Processor.new('filename').convert("stuff")
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
context "Calling #identify" do
|
20
|
-
it "runs the identify command with
|
20
|
+
it "runs the identify command with Terrapin" do
|
21
21
|
Paperclip.options[:log_command] = false
|
22
|
-
|
22
|
+
Terrapin::CommandLine.expects(:new).with("identify", "stuff", {}).returns(stub(:run))
|
23
23
|
Paperclip::Processor.new('filename').identify("stuff")
|
24
24
|
end
|
25
25
|
end
|
@@ -25,12 +25,12 @@ describe Paperclip::Schema do
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
columns = Dummy.columns.map{ |column| [column.name, column.
|
28
|
+
columns = Dummy.columns.map{ |column| [column.name, column.sql_type] }
|
29
29
|
|
30
|
-
expect(columns).to include(['avatar_file_name',
|
31
|
-
expect(columns).to include(['avatar_content_type',
|
32
|
-
expect(columns).to include(['avatar_file_size',
|
33
|
-
expect(columns).to include(['avatar_updated_at',
|
30
|
+
expect(columns).to include(['avatar_file_name', "varchar"])
|
31
|
+
expect(columns).to include(['avatar_content_type', "varchar"])
|
32
|
+
expect(columns).to include(['avatar_file_size', "bigint"])
|
33
|
+
expect(columns).to include(['avatar_updated_at', "datetime"])
|
34
34
|
end
|
35
35
|
|
36
36
|
it "displays deprecation warning" do
|
@@ -50,12 +50,12 @@ describe Paperclip::Schema do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
it "creates attachment columns" do
|
53
|
-
columns = Dummy.columns.map{ |column| [column.name, column.
|
53
|
+
columns = Dummy.columns.map{ |column| [column.name, column.sql_type] }
|
54
54
|
|
55
|
-
expect(columns).to include(['avatar_file_name',
|
56
|
-
expect(columns).to include(['avatar_content_type',
|
57
|
-
expect(columns).to include(['avatar_file_size',
|
58
|
-
expect(columns).to include(['avatar_updated_at',
|
55
|
+
expect(columns).to include(['avatar_file_name', "varchar"])
|
56
|
+
expect(columns).to include(['avatar_content_type', "varchar"])
|
57
|
+
expect(columns).to include(['avatar_file_size', "bigint"])
|
58
|
+
expect(columns).to include(['avatar_updated_at', "datetime"])
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -89,12 +89,12 @@ describe Paperclip::Schema do
|
|
89
89
|
end
|
90
90
|
|
91
91
|
it "creates attachment columns" do
|
92
|
-
columns = Dummy.columns.map{ |column| [column.name, column.
|
92
|
+
columns = Dummy.columns.map{ |column| [column.name, column.sql_type] }
|
93
93
|
|
94
|
-
expect(columns).to include(['avatar_file_name',
|
95
|
-
expect(columns).to include(['avatar_content_type',
|
96
|
-
expect(columns).to include(['avatar_file_size',
|
97
|
-
expect(columns).to include(['avatar_updated_at',
|
94
|
+
expect(columns).to include(['avatar_file_name', "varchar"])
|
95
|
+
expect(columns).to include(['avatar_content_type', "varchar"])
|
96
|
+
expect(columns).to include(['avatar_file_size', "bigint"])
|
97
|
+
expect(columns).to include(['avatar_updated_at', "datetime"])
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
@@ -119,16 +119,16 @@ describe Paperclip::Schema do
|
|
119
119
|
end
|
120
120
|
|
121
121
|
it "creates attachment columns" do
|
122
|
-
columns = Dummy.columns.map{ |column| [column.name, column.
|
122
|
+
columns = Dummy.columns.map{ |column| [column.name, column.sql_type] }
|
123
123
|
|
124
|
-
expect(columns).to include(['avatar_file_name',
|
125
|
-
expect(columns).to include(['avatar_content_type',
|
126
|
-
expect(columns).to include(['avatar_file_size',
|
127
|
-
expect(columns).to include(['avatar_updated_at',
|
128
|
-
expect(columns).to include(['photo_file_name',
|
129
|
-
expect(columns).to include(['photo_content_type',
|
130
|
-
expect(columns).to include(['photo_file_size',
|
131
|
-
expect(columns).to include(['photo_updated_at',
|
124
|
+
expect(columns).to include(['avatar_file_name', "varchar"])
|
125
|
+
expect(columns).to include(['avatar_content_type', "varchar"])
|
126
|
+
expect(columns).to include(['avatar_file_size', "bigint"])
|
127
|
+
expect(columns).to include(['avatar_updated_at', "datetime"])
|
128
|
+
expect(columns).to include(['photo_file_name', "varchar"])
|
129
|
+
expect(columns).to include(['photo_content_type', "varchar"])
|
130
|
+
expect(columns).to include(['photo_file_size', "bigint"])
|
131
|
+
expect(columns).to include(['photo_updated_at', "datetime"])
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
@@ -164,7 +164,7 @@ describe Paperclip::Schema do
|
|
164
164
|
Dummy.connection.change_table :dummies do |t|
|
165
165
|
t.column :avatar_file_name, :string
|
166
166
|
t.column :avatar_content_type, :string
|
167
|
-
t.column :avatar_file_size, :
|
167
|
+
t.column :avatar_file_size, :bigint
|
168
168
|
t.column :avatar_updated_at, :datetime
|
169
169
|
end
|
170
170
|
end
|
@@ -178,12 +178,12 @@ describe Paperclip::Schema do
|
|
178
178
|
Dummy.connection.drop_attached_file :dummies, :avatar
|
179
179
|
end
|
180
180
|
|
181
|
-
columns = Dummy.columns.map{ |column| [column.name, column.
|
181
|
+
columns = Dummy.columns.map{ |column| [column.name, column.sql_type] }
|
182
182
|
|
183
|
-
expect(columns).to_not include(['avatar_file_name',
|
184
|
-
expect(columns).to_not include(['avatar_content_type',
|
185
|
-
expect(columns).to_not include(['avatar_file_size',
|
186
|
-
expect(columns).to_not include(['avatar_updated_at',
|
183
|
+
expect(columns).to_not include(['avatar_file_name', "varchar"])
|
184
|
+
expect(columns).to_not include(['avatar_content_type', "varchar"])
|
185
|
+
expect(columns).to_not include(['avatar_file_size', "bigint"])
|
186
|
+
expect(columns).to_not include(['avatar_updated_at', "datetime"])
|
187
187
|
end
|
188
188
|
|
189
189
|
it "displays a deprecation warning" do
|
@@ -200,12 +200,12 @@ describe Paperclip::Schema do
|
|
200
200
|
end
|
201
201
|
|
202
202
|
it "removes the attachment columns" do
|
203
|
-
columns = Dummy.columns.map{ |column| [column.name, column.
|
203
|
+
columns = Dummy.columns.map{ |column| [column.name, column.sql_type] }
|
204
204
|
|
205
|
-
expect(columns).to_not include(['avatar_file_name',
|
206
|
-
expect(columns).to_not include(['avatar_content_type',
|
207
|
-
expect(columns).to_not include(['avatar_file_size',
|
208
|
-
expect(columns).to_not include(['avatar_updated_at',
|
205
|
+
expect(columns).to_not include(['avatar_file_name', "varchar"])
|
206
|
+
expect(columns).to_not include(['avatar_content_type', "varchar"])
|
207
|
+
expect(columns).to_not include(['avatar_file_size', "bigint"])
|
208
|
+
expect(columns).to_not include(['avatar_updated_at', "datetime"])
|
209
209
|
end
|
210
210
|
end
|
211
211
|
|
@@ -214,7 +214,7 @@ describe Paperclip::Schema do
|
|
214
214
|
Dummy.connection.change_table :dummies do |t|
|
215
215
|
t.column :photo_file_name, :string
|
216
216
|
t.column :photo_content_type, :string
|
217
|
-
t.column :photo_file_size, :
|
217
|
+
t.column :photo_file_size, :bigint
|
218
218
|
t.column :photo_updated_at, :datetime
|
219
219
|
end
|
220
220
|
|
@@ -222,16 +222,16 @@ describe Paperclip::Schema do
|
|
222
222
|
end
|
223
223
|
|
224
224
|
it "removes the attachment columns" do
|
225
|
-
columns = Dummy.columns.map{ |column| [column.name, column.
|
226
|
-
|
227
|
-
expect(columns).to_not include(['avatar_file_name',
|
228
|
-
expect(columns).to_not include(['avatar_content_type',
|
229
|
-
expect(columns).to_not include(['avatar_file_size',
|
230
|
-
expect(columns).to_not include(['avatar_updated_at',
|
231
|
-
expect(columns).to_not include(['photo_file_name',
|
232
|
-
expect(columns).to_not include(['photo_content_type',
|
233
|
-
expect(columns).to_not include(['photo_file_size',
|
234
|
-
expect(columns).to_not include(['photo_updated_at',
|
225
|
+
columns = Dummy.columns.map{ |column| [column.name, column.sql_type] }
|
226
|
+
|
227
|
+
expect(columns).to_not include(['avatar_file_name', "varchar"])
|
228
|
+
expect(columns).to_not include(['avatar_content_type', "varchar"])
|
229
|
+
expect(columns).to_not include(['avatar_file_size', "bigint"])
|
230
|
+
expect(columns).to_not include(['avatar_updated_at', "datetime"])
|
231
|
+
expect(columns).to_not include(['photo_file_name', "varchar"])
|
232
|
+
expect(columns).to_not include(['photo_content_type', "varchar"])
|
233
|
+
expect(columns).to_not include(['photo_file_size', "bigint"])
|
234
|
+
expect(columns).to_not include(['photo_updated_at', "datetime"])
|
235
235
|
end
|
236
236
|
end
|
237
237
|
|
@@ -206,6 +206,11 @@ describe Paperclip::Storage::Fog do
|
|
206
206
|
assert @dummy.save
|
207
207
|
assert @connection.directories.get(@fog_directory)
|
208
208
|
end
|
209
|
+
|
210
|
+
it "sucessfully rewinds the file during bucket creation" do
|
211
|
+
assert @dummy.save
|
212
|
+
expect(Paperclip.io_adapters.for(@dummy.avatar).read.length).to be > 0
|
213
|
+
end
|
209
214
|
end
|
210
215
|
|
211
216
|
context "with a bucket" do
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "spec_helper"
|
2
|
+
require "aws-sdk-s3"
|
3
3
|
|
4
4
|
describe Paperclip::Storage::S3 do
|
5
5
|
before do
|
@@ -237,7 +237,7 @@ describe Paperclip::Storage::S3 do
|
|
237
237
|
end
|
238
238
|
end
|
239
239
|
|
240
|
-
#
|
240
|
+
# the s3_host_name will be defined by the s3_region
|
241
241
|
context "s3_host_name" do
|
242
242
|
before do
|
243
243
|
rebuild_model storage: :s3,
|
@@ -282,7 +282,7 @@ describe Paperclip::Storage::S3 do
|
|
282
282
|
end
|
283
283
|
end
|
284
284
|
|
285
|
-
context "use_accelerate_endpoint"
|
285
|
+
context "use_accelerate_endpoint" do
|
286
286
|
context "defaults to false" do
|
287
287
|
before do
|
288
288
|
rebuild_model(
|
@@ -308,7 +308,7 @@ describe Paperclip::Storage::S3 do
|
|
308
308
|
end
|
309
309
|
end
|
310
310
|
|
311
|
-
context "set to true"
|
311
|
+
context "set to true" do
|
312
312
|
before do
|
313
313
|
rebuild_model(
|
314
314
|
storage: :s3,
|
@@ -793,7 +793,7 @@ describe Paperclip::Storage::S3 do
|
|
793
793
|
end
|
794
794
|
end
|
795
795
|
|
796
|
-
#
|
796
|
+
# the bucket.name is determined by the :s3_region
|
797
797
|
context "Parsing S3 credentials with a s3_host_name in them" do
|
798
798
|
before do
|
799
799
|
rebuild_model storage: :s3,
|
@@ -48,7 +48,7 @@ describe Paperclip::Thumbnail do
|
|
48
48
|
it "lets us know when a command isn't found versus a processing error" do
|
49
49
|
old_path = ENV['PATH']
|
50
50
|
begin
|
51
|
-
|
51
|
+
Terrapin::CommandLine.path = ''
|
52
52
|
Paperclip.options[:command_path] = ''
|
53
53
|
ENV['PATH'] = ''
|
54
54
|
assert_raises(Paperclip::Errors::CommandNotFoundError) do
|
@@ -102,7 +102,7 @@ describe Paperclip::Thumbnail do
|
|
102
102
|
|
103
103
|
output_file = thumb.make
|
104
104
|
|
105
|
-
command =
|
105
|
+
command = Terrapin::CommandLine.new("identify", "-format %wx%h :file")
|
106
106
|
assert_equal "50x50", command.run(file: output_file.path).strip
|
107
107
|
end
|
108
108
|
|
@@ -179,17 +179,19 @@ describe Paperclip::Thumbnail do
|
|
179
179
|
end
|
180
180
|
|
181
181
|
it "errors when trying to create the thumbnail" do
|
182
|
-
|
183
|
-
|
182
|
+
silence_stream(STDERR) do
|
183
|
+
expect {
|
184
184
|
@thumb.make
|
185
|
-
|
185
|
+
}.to raise_error(
|
186
|
+
Paperclip::Error, /unrecognized option `-this-aint-no-option'/
|
187
|
+
)
|
186
188
|
end
|
187
189
|
end
|
188
190
|
|
189
191
|
it "lets us know when a command isn't found versus a processing error" do
|
190
192
|
old_path = ENV['PATH']
|
191
193
|
begin
|
192
|
-
|
194
|
+
Terrapin::CommandLine.path = ''
|
193
195
|
Paperclip.options[:command_path] = ''
|
194
196
|
ENV['PATH'] = ''
|
195
197
|
assert_raises(Paperclip::Errors::CommandNotFoundError) do
|
data/spec/spec_helper.rb
CHANGED
@@ -27,7 +27,7 @@ module ModelReconstruction
|
|
27
27
|
ActiveRecord::Base.connection.create_table :dummies, {force: true}, &block
|
28
28
|
end
|
29
29
|
|
30
|
-
def modify_table
|
30
|
+
def modify_table &block
|
31
31
|
ActiveRecord::Base.connection.change_table :dummies, &block
|
32
32
|
end
|
33
33
|
|
@@ -37,7 +37,7 @@ module ModelReconstruction
|
|
37
37
|
table.column :other, :string
|
38
38
|
table.column :avatar_file_name, :string
|
39
39
|
table.column :avatar_content_type, :string
|
40
|
-
table.column :avatar_file_size, :
|
40
|
+
table.column :avatar_file_size, :bigint
|
41
41
|
table.column :avatar_updated_at, :datetime
|
42
42
|
table.column :avatar_fingerprint, :string
|
43
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paperclip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 6.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Yurek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -39,19 +39,19 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 4.2.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: terrapin
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.6.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.6.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: mime-types
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,25 +151,19 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name: aws-sdk
|
154
|
+
name: aws-sdk-s3
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
160
|
-
- - "<"
|
161
|
-
- !ruby/object:Gem::Version
|
162
|
-
version: '3.0'
|
159
|
+
version: '0'
|
163
160
|
type: :development
|
164
161
|
prerelease: false
|
165
162
|
version_requirements: !ruby/object:Gem::Requirement
|
166
163
|
requirements:
|
167
164
|
- - ">="
|
168
165
|
- !ruby/object:Gem::Version
|
169
|
-
version:
|
170
|
-
- - "<"
|
171
|
-
- !ruby/object:Gem::Version
|
172
|
-
version: '3.0'
|
166
|
+
version: '0'
|
173
167
|
- !ruby/object:Gem::Dependency
|
174
168
|
name: bourne
|
175
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -388,6 +382,7 @@ extensions: []
|
|
388
382
|
extra_rdoc_files: []
|
389
383
|
files:
|
390
384
|
- ".codeclimate.yml"
|
385
|
+
- ".github/issue_template.md"
|
391
386
|
- ".gitignore"
|
392
387
|
- ".hound.yml"
|
393
388
|
- ".rubocop.yml"
|
@@ -396,6 +391,8 @@ files:
|
|
396
391
|
- CONTRIBUTING.md
|
397
392
|
- Gemfile
|
398
393
|
- LICENSE
|
394
|
+
- MIGRATING-ES.md
|
395
|
+
- MIGRATING.md
|
399
396
|
- NEWS
|
400
397
|
- README.md
|
401
398
|
- RELEASING.md
|
@@ -543,7 +540,6 @@ files:
|
|
543
540
|
- spec/paperclip/validators_spec.rb
|
544
541
|
- spec/spec_helper.rb
|
545
542
|
- spec/support/assertions.rb
|
546
|
-
- spec/support/conditional_filter_helper.rb
|
547
543
|
- spec/support/fake_model.rb
|
548
544
|
- spec/support/fake_rails.rb
|
549
545
|
- spec/support/fixtures/12k.png
|
@@ -582,9 +578,9 @@ post_install_message: |
|
|
582
578
|
# NOTE FOR UPGRADING FROM 4.3.0 OR EARLIER #
|
583
579
|
##################################################
|
584
580
|
|
585
|
-
Paperclip is now compatible with aws-sdk
|
581
|
+
Paperclip is now compatible with aws-sdk-s3.
|
586
582
|
|
587
|
-
If you are using S3 storage, aws-sdk
|
583
|
+
If you are using S3 storage, aws-sdk-s3 requires you to make a few small
|
588
584
|
changes:
|
589
585
|
|
590
586
|
* You must set the `s3_region`
|
@@ -593,7 +589,7 @@ post_install_message: |
|
|
593
589
|
using a hyphen. For example, `:public_read` needs to be changed to
|
594
590
|
`public-read`.
|
595
591
|
|
596
|
-
For a walkthrough of upgrading from 4 to 5 and aws-sdk >= 2.0 you can watch
|
592
|
+
For a walkthrough of upgrading from 4 to *5* (not 6) and aws-sdk >= 2.0 you can watch
|
597
593
|
http://rubythursday.com/episodes/ruby-snack-27-upgrade-paperclip-and-aws-sdk-in-prep-for-rails-5
|
598
594
|
rdoc_options: []
|
599
595
|
require_paths:
|
@@ -611,8 +607,112 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
611
607
|
requirements:
|
612
608
|
- ImageMagick
|
613
609
|
rubyforge_project:
|
614
|
-
rubygems_version: 2.
|
610
|
+
rubygems_version: 2.7.4
|
615
611
|
signing_key:
|
616
612
|
specification_version: 4
|
617
613
|
summary: File attachments as attributes for ActiveRecord
|
618
|
-
test_files:
|
614
|
+
test_files:
|
615
|
+
- features/basic_integration.feature
|
616
|
+
- features/migration.feature
|
617
|
+
- features/rake_tasks.feature
|
618
|
+
- features/step_definitions/attachment_steps.rb
|
619
|
+
- features/step_definitions/html_steps.rb
|
620
|
+
- features/step_definitions/rails_steps.rb
|
621
|
+
- features/step_definitions/s3_steps.rb
|
622
|
+
- features/step_definitions/web_steps.rb
|
623
|
+
- features/support/env.rb
|
624
|
+
- features/support/fakeweb.rb
|
625
|
+
- features/support/file_helpers.rb
|
626
|
+
- features/support/fixtures/boot_config.txt
|
627
|
+
- features/support/fixtures/gemfile.txt
|
628
|
+
- features/support/fixtures/preinitializer.txt
|
629
|
+
- features/support/paths.rb
|
630
|
+
- features/support/rails.rb
|
631
|
+
- features/support/selectors.rb
|
632
|
+
- spec/database.yml
|
633
|
+
- spec/paperclip/attachment_definitions_spec.rb
|
634
|
+
- spec/paperclip/attachment_processing_spec.rb
|
635
|
+
- spec/paperclip/attachment_registry_spec.rb
|
636
|
+
- spec/paperclip/attachment_spec.rb
|
637
|
+
- spec/paperclip/content_type_detector_spec.rb
|
638
|
+
- spec/paperclip/file_command_content_type_detector_spec.rb
|
639
|
+
- spec/paperclip/filename_cleaner_spec.rb
|
640
|
+
- spec/paperclip/geometry_detector_spec.rb
|
641
|
+
- spec/paperclip/geometry_parser_spec.rb
|
642
|
+
- spec/paperclip/geometry_spec.rb
|
643
|
+
- spec/paperclip/glue_spec.rb
|
644
|
+
- spec/paperclip/has_attached_file_spec.rb
|
645
|
+
- spec/paperclip/integration_spec.rb
|
646
|
+
- spec/paperclip/interpolations_spec.rb
|
647
|
+
- spec/paperclip/io_adapters/abstract_adapter_spec.rb
|
648
|
+
- spec/paperclip/io_adapters/attachment_adapter_spec.rb
|
649
|
+
- spec/paperclip/io_adapters/data_uri_adapter_spec.rb
|
650
|
+
- spec/paperclip/io_adapters/empty_string_adapter_spec.rb
|
651
|
+
- spec/paperclip/io_adapters/file_adapter_spec.rb
|
652
|
+
- spec/paperclip/io_adapters/http_url_proxy_adapter_spec.rb
|
653
|
+
- spec/paperclip/io_adapters/identity_adapter_spec.rb
|
654
|
+
- spec/paperclip/io_adapters/nil_adapter_spec.rb
|
655
|
+
- spec/paperclip/io_adapters/registry_spec.rb
|
656
|
+
- spec/paperclip/io_adapters/stringio_adapter_spec.rb
|
657
|
+
- spec/paperclip/io_adapters/uploaded_file_adapter_spec.rb
|
658
|
+
- spec/paperclip/io_adapters/uri_adapter_spec.rb
|
659
|
+
- spec/paperclip/matchers/have_attached_file_matcher_spec.rb
|
660
|
+
- spec/paperclip/matchers/validate_attachment_content_type_matcher_spec.rb
|
661
|
+
- spec/paperclip/matchers/validate_attachment_presence_matcher_spec.rb
|
662
|
+
- spec/paperclip/matchers/validate_attachment_size_matcher_spec.rb
|
663
|
+
- spec/paperclip/media_type_spoof_detector_spec.rb
|
664
|
+
- spec/paperclip/meta_class_spec.rb
|
665
|
+
- spec/paperclip/paperclip_missing_attachment_styles_spec.rb
|
666
|
+
- spec/paperclip/paperclip_spec.rb
|
667
|
+
- spec/paperclip/plural_cache_spec.rb
|
668
|
+
- spec/paperclip/processor_helpers_spec.rb
|
669
|
+
- spec/paperclip/processor_spec.rb
|
670
|
+
- spec/paperclip/rails_environment_spec.rb
|
671
|
+
- spec/paperclip/rake_spec.rb
|
672
|
+
- spec/paperclip/schema_spec.rb
|
673
|
+
- spec/paperclip/storage/filesystem_spec.rb
|
674
|
+
- spec/paperclip/storage/fog_spec.rb
|
675
|
+
- spec/paperclip/storage/s3_live_spec.rb
|
676
|
+
- spec/paperclip/storage/s3_spec.rb
|
677
|
+
- spec/paperclip/style_spec.rb
|
678
|
+
- spec/paperclip/tempfile_factory_spec.rb
|
679
|
+
- spec/paperclip/tempfile_spec.rb
|
680
|
+
- spec/paperclip/thumbnail_spec.rb
|
681
|
+
- spec/paperclip/url_generator_spec.rb
|
682
|
+
- spec/paperclip/validators/attachment_content_type_validator_spec.rb
|
683
|
+
- spec/paperclip/validators/attachment_file_name_validator_spec.rb
|
684
|
+
- spec/paperclip/validators/attachment_presence_validator_spec.rb
|
685
|
+
- spec/paperclip/validators/attachment_size_validator_spec.rb
|
686
|
+
- spec/paperclip/validators/media_type_spoof_detection_validator_spec.rb
|
687
|
+
- spec/paperclip/validators_spec.rb
|
688
|
+
- spec/spec_helper.rb
|
689
|
+
- spec/support/assertions.rb
|
690
|
+
- spec/support/fake_model.rb
|
691
|
+
- spec/support/fake_rails.rb
|
692
|
+
- spec/support/fixtures/12k.png
|
693
|
+
- spec/support/fixtures/50x50.png
|
694
|
+
- spec/support/fixtures/5k.png
|
695
|
+
- spec/support/fixtures/animated
|
696
|
+
- spec/support/fixtures/animated.gif
|
697
|
+
- spec/support/fixtures/animated.unknown
|
698
|
+
- spec/support/fixtures/bad.png
|
699
|
+
- spec/support/fixtures/empty.html
|
700
|
+
- spec/support/fixtures/empty.xlsx
|
701
|
+
- spec/support/fixtures/fog.yml
|
702
|
+
- spec/support/fixtures/rotated.jpg
|
703
|
+
- spec/support/fixtures/s3.yml
|
704
|
+
- spec/support/fixtures/spaced file.jpg
|
705
|
+
- spec/support/fixtures/spaced file.png
|
706
|
+
- spec/support/fixtures/text.txt
|
707
|
+
- spec/support/fixtures/twopage.pdf
|
708
|
+
- spec/support/fixtures/uppercase.PNG
|
709
|
+
- spec/support/matchers/accept.rb
|
710
|
+
- spec/support/matchers/exist.rb
|
711
|
+
- spec/support/matchers/have_column.rb
|
712
|
+
- spec/support/mock_attachment.rb
|
713
|
+
- spec/support/mock_interpolator.rb
|
714
|
+
- spec/support/mock_url_generator_builder.rb
|
715
|
+
- spec/support/model_reconstruction.rb
|
716
|
+
- spec/support/reporting.rb
|
717
|
+
- spec/support/test_data.rb
|
718
|
+
- spec/support/version_helper.rb
|