kt-paperclip 7.2.0 → 7.2.2

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
  SHA256:
3
- metadata.gz: ada7e8b864e1b23b9bd7064be5e30202ce2f89869de43d136df1a915951fc97d
4
- data.tar.gz: fbe391dc1f775274f4e3f6972991c2883fc30c5d4970c925b43a48c651c6f9e3
3
+ metadata.gz: a7308352f1d792e5e861ba828d1eb3994b5956fc51df06a4cbfedfe134ce105d
4
+ data.tar.gz: be4d4161c411a18edaf2a92b5a48d746d87d01f3d5a6e4fe5fecc20f87ad42a4
5
5
  SHA512:
6
- metadata.gz: bb686418ce534696a30cb0610b7af967b608a889c2f1efb68ce577ab65334df366177674887cadb98be6739b54c06158cae9de7d98a8adaf011d23e245128ed8
7
- data.tar.gz: b19cd6cd395d65fa25d90f63f597fbe4585890a2c257d0636791613410ea53b6d9df441512e581160e4c16e2d3e0e8dff55910038165449516a3c00067a99eb3
6
+ metadata.gz: e202f7d5a1a9466f69118e485c5c747f10942644337940b6141ffb41904118353cab09858fbdabf4e68ba87d9e5199109a1a1525d7eaeea4a1601ba9e384459f
7
+ data.tar.gz: 20fb1d6bd39a2d21a5b2f627d5ab92aba95ae88d523319de7b06e5e0983c281e76ae218a6bccf64fdc16362652cb1cc1251eab7fdacc14b6428b8dbafd2bdc81
data/NEWS CHANGED
@@ -1,5 +1,13 @@
1
1
  [UNRELEASED]
2
- Issue file delete only once per unique style when nullifying attachment or destroying an object. Avoids triggering a rate limit error on Google Cloud Storage.
2
+
3
+ 7.2.1 (2023-09-09)
4
+ * Improvement: Support file extension names both as symbols and strings for :content_type_mappings
5
+
6
+ 7.2.0 (2023-05-30)
7
+ * Paperclip schema statements are consistent with ActiveRecord::Migration::Compatibility versioning. Old migrations containing Paperclip schema statements perform the same schema changes both before and after an ActiveRecord version upgrade.
8
+
9
+ 7.0.1 (2021-10-06)
10
+ * Issue file delete only once per unique style when nullifying attachment or destroying an object. Avoids triggering a rate limit error on Google Cloud Storage.
3
11
 
4
12
  7.0.0 (2021-05-28)
5
13
  * Replace `mimemagic` gem with `marcel` due to licensing issues. See https://github.com/kreeti/kt-paperclip/pull/54 for details and limitations
@@ -7,7 +7,7 @@ module Paperclip
7
7
 
8
8
  def make
9
9
  geometry = GeometryParser.new(geometry_string.strip).make
10
- geometry || raise(Errors::NotIdentifiedByImageMagickError.new)
10
+ geometry || raise(Errors::NotIdentifiedByImageMagickError.new("Could not identify image size"))
11
11
  end
12
12
 
13
13
  private
@@ -4,14 +4,15 @@ require "paperclip/schema"
4
4
 
5
5
  module Paperclip
6
6
  module Glue
7
+ LOCALE_PATHS = Dir.glob("#{File.dirname(__FILE__)}/locales/*.{rb,yml}")
8
+
7
9
  def self.included(base)
8
10
  base.extend ClassMethods
9
11
  base.send :include, Callbacks
10
12
  base.send :include, Validators
11
13
  base.send :include, Schema if defined? ActiveRecord::Base
12
14
 
13
- locale_path = Dir.glob(File.dirname(__FILE__) + "/locales/*.{rb,yml}")
14
- I18n.load_path += locale_path unless I18n.load_path.include?(locale_path)
15
+ I18n.load_path += LOCALE_PATHS unless (LOCALE_PATHS - I18n.load_path).empty?
15
16
  end
16
17
  end
17
18
  end
@@ -0,0 +1,20 @@
1
+ gd:
2
+ errors:
3
+ messages:
4
+ in_between: "– feumaidh seo a bhith eadar %{min} ’s %{max}"
5
+ spoofed_media_type: "– tha susbaint ann nach eil a-rèir na chaidh aithris"
6
+
7
+ number:
8
+ human:
9
+ storage_units:
10
+ format: "%n %u"
11
+ units:
12
+ byte:
13
+ one: "bhaidht"
14
+ two: "bhaidht"
15
+ few: "baidhtean"
16
+ other: "baidht"
17
+ kb: "KB"
18
+ mb: "MB"
19
+ gb: "GB"
20
+ tb: "TB"
@@ -82,7 +82,8 @@ module Paperclip
82
82
  end
83
83
 
84
84
  def mapped_content_type
85
- Paperclip.options[:content_type_mappings][filename_extension]
85
+ content_type_mappings = Paperclip.options[:content_type_mappings]
86
+ content_type_mappings[filename_extension] || content_type_mappings[filename_extension.to_s]
86
87
  end
87
88
 
88
89
  def filename_extension
@@ -11,7 +11,7 @@ module Paperclip
11
11
  def self.included(_base)
12
12
  ActiveRecord::ConnectionAdapters::Table.include TableDefinition
13
13
  ActiveRecord::ConnectionAdapters::TableDefinition.include TableDefinition
14
- ActiveRecord::ConnectionAdapters::AbstractAdapter.include Statements
14
+ ActiveRecord::Migration.include Statements
15
15
  ActiveRecord::Migration::CommandRecorder.include CommandRecorder
16
16
  end
17
17
 
@@ -35,8 +35,8 @@ module Paperclip
35
35
  options.slice(*AVAILABLE_CHECKS).each do |option, option_value|
36
36
  option_value = option_value.call(record) if option_value.is_a?(Proc)
37
37
  option_value = extract_option_value(option, option_value)
38
- operator = ActiveRecord::VERSION::MAJOR >= 7 ? COMPARE_CHECKS[option] : CHECKS[option]
39
-
38
+ operator = ActiveModel::VERSION::MAJOR >= 7 ? COMPARE_CHECKS[option] : CHECKS[option]
39
+
40
40
  unless value.send(operator, option_value)
41
41
  error_message_key = options[:in] ? :in_between : option
42
42
  error_attrs.each do |error_attr_name|
@@ -1,3 +1,3 @@
1
1
  module Paperclip
2
- VERSION = "7.2.0" unless defined?(Paperclip::VERSION)
2
+ VERSION = "7.2.2" unless defined?(Paperclip::VERSION)
3
3
  end
data/paperclip.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.add_dependency("activesupport", ">= 4.2.0")
27
27
  s.add_dependency("mime-types")
28
28
  s.add_dependency("marcel", "~> 1.0.1")
29
- s.add_dependency("terrapin", "~> 0.6.0")
29
+ s.add_dependency("terrapin", ">= 0.6.0", "< 2.0")
30
30
 
31
31
  s.add_development_dependency("activerecord", ">= 4.2.0")
32
32
  s.add_development_dependency("appraisal")
@@ -1333,7 +1333,7 @@ describe Paperclip::Attachment do
1333
1333
 
1334
1334
  context "An attachment with only a avatar_file_name column" do
1335
1335
  before do
1336
- ActiveRecord::Base.connection.create_table :dummies, force: true do |table|
1336
+ ActiveRecord::Migration.create_table :dummies, force: true do |table|
1337
1337
  table.column :avatar_file_name, :string
1338
1338
  end
1339
1339
  rebuild_class
@@ -1359,7 +1359,7 @@ describe Paperclip::Attachment do
1359
1359
 
1360
1360
  context "and avatar_created_at column" do
1361
1361
  before do
1362
- ActiveRecord::Base.connection.add_column :dummies, :avatar_created_at, :timestamp
1362
+ ActiveRecord::Migration.add_column :dummies, :avatar_created_at, :timestamp
1363
1363
  rebuild_class
1364
1364
  @dummy = Dummy.new
1365
1365
  end
@@ -1396,7 +1396,7 @@ describe Paperclip::Attachment do
1396
1396
 
1397
1397
  context "and avatar_updated_at column" do
1398
1398
  before do
1399
- ActiveRecord::Base.connection.add_column :dummies, :avatar_updated_at, :timestamp
1399
+ ActiveRecord::Migration.add_column :dummies, :avatar_updated_at, :timestamp
1400
1400
  rebuild_class
1401
1401
  @dummy = Dummy.new
1402
1402
  end
@@ -1426,7 +1426,7 @@ describe Paperclip::Attachment do
1426
1426
 
1427
1427
  context "and avatar_content_type column" do
1428
1428
  before do
1429
- ActiveRecord::Base.connection.add_column :dummies, :avatar_content_type, :string
1429
+ ActiveRecord::Migration.add_column :dummies, :avatar_content_type, :string
1430
1430
  rebuild_class
1431
1431
  @dummy = Dummy.new
1432
1432
  end
@@ -1443,7 +1443,7 @@ describe Paperclip::Attachment do
1443
1443
 
1444
1444
  context "and avatar_file_size column" do
1445
1445
  before do
1446
- ActiveRecord::Base.connection.add_column :dummies, :avatar_file_size, :bigint
1446
+ ActiveRecord::Migration.add_column :dummies, :avatar_file_size, :bigint
1447
1447
  rebuild_class
1448
1448
  @dummy = Dummy.new
1449
1449
  end
@@ -1467,7 +1467,7 @@ describe Paperclip::Attachment do
1467
1467
 
1468
1468
  context "and avatar_fingerprint column" do
1469
1469
  before do
1470
- ActiveRecord::Base.connection.add_column :dummies, :avatar_fingerprint, :string
1470
+ ActiveRecord::Migration.add_column :dummies, :avatar_fingerprint, :string
1471
1471
  rebuild_class
1472
1472
  @dummy = Dummy.new
1473
1473
  end
@@ -35,4 +35,13 @@ describe Paperclip::GeometryDetector do
35
35
  Paperclip.options[:use_exif_orientation] = true
36
36
  end
37
37
  end
38
+
39
+ it "raises an exception with a message when the file is not an image" do
40
+ file = fixture_file("text.txt")
41
+ factory = Paperclip::GeometryDetector.new(file)
42
+
43
+ expect do
44
+ factory.make
45
+ end.to raise_error(Paperclip::Errors::NotIdentifiedByImageMagickError, "Could not identify image size")
46
+ end
38
47
  end
@@ -147,23 +147,35 @@ describe Paperclip::Geometry do
147
147
 
148
148
  it "does not generate from a bad file" do
149
149
  file = "/home/This File Does Not Exist.omg"
150
- expect { @geo = Paperclip::Geometry.from_file(file) }.to raise_error(Paperclip::Errors::NotIdentifiedByImageMagickError)
150
+ expect do
151
+ @geo = Paperclip::Geometry.from_file(file)
152
+ end.to raise_error(Paperclip::Errors::NotIdentifiedByImageMagickError,
153
+ "Could not identify image size")
151
154
  end
152
155
 
153
156
  it "does not generate from a blank filename" do
154
157
  file = ""
155
- expect { @geo = Paperclip::Geometry.from_file(file) }.to raise_error(Paperclip::Errors::NotIdentifiedByImageMagickError)
158
+ expect do
159
+ @geo = Paperclip::Geometry.from_file(file)
160
+ end.to raise_error(Paperclip::Errors::NotIdentifiedByImageMagickError,
161
+ "Cannot find the geometry of a file with a blank name")
156
162
  end
157
163
 
158
164
  it "does not generate from a nil file" do
159
165
  file = nil
160
- expect { @geo = Paperclip::Geometry.from_file(file) }.to raise_error(Paperclip::Errors::NotIdentifiedByImageMagickError)
166
+ expect do
167
+ @geo = Paperclip::Geometry.from_file(file)
168
+ end.to raise_error(Paperclip::Errors::NotIdentifiedByImageMagickError,
169
+ "Cannot find the geometry of a file with a blank name")
161
170
  end
162
171
 
163
172
  it "does not generate from a file with no path" do
164
173
  file = double("file", path: "")
165
174
  allow(file).to receive(:respond_to?).with(:path).and_return(true)
166
- expect { @geo = Paperclip::Geometry.from_file(file) }.to raise_error(Paperclip::Errors::NotIdentifiedByImageMagickError)
175
+ expect do
176
+ @geo = Paperclip::Geometry.from_file(file)
177
+ end.to raise_error(Paperclip::Errors::NotIdentifiedByImageMagickError,
178
+ "Cannot find the geometry of a file with a blank name")
167
179
  end
168
180
 
169
181
  it "lets us know when a command isn't found versus a processing error" do
@@ -39,4 +39,25 @@ describe Paperclip::Glue do
39
39
  Object.send :remove_const, "NonActiveRecordModel"
40
40
  end
41
41
  end
42
+
43
+ describe "when included" do
44
+ it "does not mutate I18n.load_path more than once" do
45
+ before_load_path = I18n.load_path
46
+ I18n.load_path = []
47
+
48
+ # expect twice because the load_path is reset after creating the classes
49
+ expect(I18n.config).to receive(:load_path=).and_call_original.twice
50
+
51
+ FirstModel = Class.new
52
+ FirstModel.include Paperclip::Glue
53
+
54
+ SecondModel = Class.new
55
+ SecondModel.include Paperclip::Glue
56
+
57
+ ThirdModel = Class.new
58
+ ThirdModel.include Paperclip::Glue
59
+
60
+ I18n.load_path = before_load_path
61
+ end
62
+ end
42
63
  end
@@ -224,7 +224,7 @@ describe Paperclip::UriAdapter do
224
224
 
225
225
  it "calls open with read_timeout option" do
226
226
  expect(@uri_opener)
227
- .to receive(:open).with(@uri, read_timeout: 120).at_least(1).times
227
+ .to receive(:open).with(@uri, { read_timeout: 120 }).at_least(1).times
228
228
  end
229
229
  end
230
230
  end
@@ -32,12 +32,18 @@ describe Paperclip::MediaTypeSpoofDetector do
32
32
  end
33
33
 
34
34
  it "does not reject when the extension => content_type is in :content_type_mappings" do
35
+ file = Tempfile.open(["test", ".PEM"])
36
+ file.puts "Certificate!"
37
+ file.close
38
+
39
+ adapter = Paperclip.io_adapters.for(File.new(file.path))
40
+
35
41
  begin
36
42
  Paperclip.options[:content_type_mappings] = { pem: "text/plain" }
37
- file = Tempfile.open(["test", ".PEM"])
38
- file.puts "Certificate!"
39
- file.close
40
- adapter = Paperclip.io_adapters.for(File.new(file.path))
43
+ assert !Paperclip::MediaTypeSpoofDetector.using(adapter, adapter.original_filename, adapter.content_type).spoofed?
44
+
45
+ # As a string.
46
+ Paperclip.options[:content_type_mappings] = { "pem" => "text/plain" }
41
47
  assert !Paperclip::MediaTypeSpoofDetector.using(adapter, adapter.original_filename, adapter.content_type).spoofed?
42
48
  ensure
43
49
  Paperclip.options[:content_type_mappings] = {}
@@ -49,7 +49,7 @@ describe "Missing Attachment Styles" do
49
49
  expected_hash = { Dummy: { avatar: [:export, :thumb] } }
50
50
  assert_equal expected_hash, Paperclip.missing_attachments_styles
51
51
 
52
- ActiveRecord::Base.connection.create_table :books, force: true
52
+ ActiveRecord::Migration.create_table :books, force: true
53
53
  class ::Book < ActiveRecord::Base
54
54
  has_attached_file :cover, styles: { small: "x100", large: "1000x1000>" }
55
55
  has_attached_file :sample, styles: { thumb: "x100" }
@@ -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
- expect(Terrapin::CommandLine).to receive(:new).with("convert", "stuff", logger: Paperclip.logger).and_return(double(run: nil))
66
+ expect(Terrapin::CommandLine).to receive(:new).with("convert", "stuff", { logger: Paperclip.logger }).and_return(double(run: nil))
67
67
  Paperclip.run("convert", "stuff")
68
68
  end
69
69
  end
@@ -11,7 +11,7 @@ describe Paperclip::Schema do
11
11
 
12
12
  after do
13
13
  begin
14
- Dummy.connection.drop_table :dummies
14
+ ActiveRecord::Migration.drop_table :dummies
15
15
  rescue StandardError
16
16
  nil
17
17
  end
@@ -23,7 +23,7 @@ describe Paperclip::Schema do
23
23
  ActiveSupport::Deprecation.silenced = false
24
24
  end
25
25
  it "creates attachment columns" do
26
- Dummy.connection.create_table :dummies, force: true do |t|
26
+ ActiveRecord::Migration.create_table :dummies, force: true do |t|
27
27
  ActiveSupport::Deprecation.silence do
28
28
  t.has_attached_file :avatar
29
29
  end
@@ -38,7 +38,7 @@ describe Paperclip::Schema do
38
38
  end
39
39
 
40
40
  it "displays deprecation warning" do
41
- Dummy.connection.create_table :dummies, force: true do |t|
41
+ ActiveRecord::Migration.create_table :dummies, force: true do |t|
42
42
  assert_deprecated do
43
43
  t.has_attached_file :avatar
44
44
  end
@@ -48,7 +48,7 @@ describe Paperclip::Schema do
48
48
 
49
49
  context "using #attachment" do
50
50
  before do
51
- Dummy.connection.create_table :dummies, force: true do |t|
51
+ ActiveRecord::Migration.create_table :dummies, force: true do |t|
52
52
  t.attachment :avatar
53
53
  end
54
54
  end
@@ -65,7 +65,7 @@ describe Paperclip::Schema do
65
65
 
66
66
  context "using #attachment with options" do
67
67
  before do
68
- Dummy.connection.create_table :dummies, force: true do |t|
68
+ ActiveRecord::Migration.create_table :dummies, force: true do |t|
69
69
  t.attachment :avatar, default: 1, file_name: { default: "default" }
70
70
  end
71
71
  end
@@ -83,13 +83,13 @@ describe Paperclip::Schema do
83
83
 
84
84
  context "within schema statement" do
85
85
  before do
86
- Dummy.connection.create_table :dummies, force: true
86
+ ActiveRecord::Migration.create_table :dummies, force: true
87
87
  end
88
88
 
89
89
  context "migrating up" do
90
90
  context "with single attachment" do
91
91
  before do
92
- Dummy.connection.add_attachment :dummies, :avatar
92
+ ActiveRecord::Migration.add_attachment :dummies, :avatar
93
93
  end
94
94
 
95
95
  it "creates attachment columns" do
@@ -104,7 +104,7 @@ describe Paperclip::Schema do
104
104
 
105
105
  context "with single attachment and options" do
106
106
  before do
107
- Dummy.connection.add_attachment :dummies, :avatar, default: "1", file_name: { default: "default" }
107
+ ActiveRecord::Migration.add_attachment :dummies, :avatar, default: "1", file_name: { default: "default" }
108
108
  end
109
109
 
110
110
  it "sets defaults on columns" do
@@ -119,7 +119,7 @@ describe Paperclip::Schema do
119
119
 
120
120
  context "with multiple attachments" do
121
121
  before do
122
- Dummy.connection.add_attachment :dummies, :avatar, :photo
122
+ ActiveRecord::Migration.add_attachment :dummies, :avatar, :photo
123
123
  end
124
124
 
125
125
  it "creates attachment columns" do
@@ -138,7 +138,7 @@ describe Paperclip::Schema do
138
138
 
139
139
  context "with multiple attachments and options" do
140
140
  before do
141
- Dummy.connection.add_attachment :dummies, :avatar, :photo, default: "1", file_name: { default: "default" }
141
+ ActiveRecord::Migration.add_attachment :dummies, :avatar, :photo, default: "1", file_name: { default: "default" }
142
142
  end
143
143
 
144
144
  it "sets defaults on columns" do
@@ -157,7 +157,7 @@ describe Paperclip::Schema do
157
157
  context "with no attachment" do
158
158
  it "raises an error" do
159
159
  assert_raises ArgumentError do
160
- Dummy.connection.add_attachment :dummies
160
+ ActiveRecord::Migration.add_attachment :dummies
161
161
  end
162
162
  end
163
163
  end
@@ -165,7 +165,7 @@ describe Paperclip::Schema do
165
165
 
166
166
  context "migrating down" do
167
167
  before do
168
- Dummy.connection.change_table :dummies do |t|
168
+ ActiveRecord::Migration.change_table :dummies do |t|
169
169
  t.column :avatar_file_name, :string
170
170
  t.column :avatar_content_type, :string
171
171
  t.column :avatar_file_size, :bigint
@@ -179,7 +179,7 @@ describe Paperclip::Schema do
179
179
  end
180
180
  it "removes the attachment columns" do
181
181
  ActiveSupport::Deprecation.silence do
182
- Dummy.connection.drop_attached_file :dummies, :avatar
182
+ ActiveRecord::Migration.drop_attached_file :dummies, :avatar
183
183
  end
184
184
 
185
185
  columns = Dummy.columns.map { |column| [column.name, column.sql_type] }
@@ -192,7 +192,7 @@ describe Paperclip::Schema do
192
192
 
193
193
  it "displays a deprecation warning" do
194
194
  assert_deprecated do
195
- Dummy.connection.drop_attached_file :dummies, :avatar
195
+ ActiveRecord::Migration.drop_attached_file :dummies, :avatar
196
196
  end
197
197
  end
198
198
  end
@@ -200,7 +200,7 @@ describe Paperclip::Schema do
200
200
  context "using #remove_attachment" do
201
201
  context "with single attachment" do
202
202
  before do
203
- Dummy.connection.remove_attachment :dummies, :avatar
203
+ ActiveRecord::Migration.remove_attachment :dummies, :avatar
204
204
  end
205
205
 
206
206
  it "removes the attachment columns" do
@@ -215,14 +215,14 @@ describe Paperclip::Schema do
215
215
 
216
216
  context "with multiple attachments" do
217
217
  before do
218
- Dummy.connection.change_table :dummies do |t|
218
+ ActiveRecord::Migration.change_table :dummies do |t|
219
219
  t.column :photo_file_name, :string
220
220
  t.column :photo_content_type, :string
221
221
  t.column :photo_file_size, :bigint
222
222
  t.column :photo_updated_at, :datetime
223
223
  end
224
224
 
225
- Dummy.connection.remove_attachment :dummies, :avatar, :photo
225
+ ActiveRecord::Migration.remove_attachment :dummies, :avatar, :photo
226
226
  end
227
227
 
228
228
  it "removes the attachment columns" do
@@ -242,7 +242,7 @@ describe Paperclip::Schema do
242
242
  context "with no attachment" do
243
243
  it "raises an error" do
244
244
  assert_raises ArgumentError do
245
- Dummy.connection.remove_attachment :dummies
245
+ ActiveRecord::Migration.remove_attachment :dummies
246
246
  end
247
247
  end
248
248
  end
@@ -395,12 +395,22 @@ describe Paperclip::Storage::S3 do
395
395
  allow(@dummy.avatar).to receive(:s3_object).with(:thumbnail).and_return(object)
396
396
 
397
397
  expect(object).to receive(:upload_file).
398
- with(anything, content_type: "image/png",
399
- acl: :"public-read")
398
+ with(
399
+ anything,
400
+ {
401
+ content_type: "image/png",
402
+ acl: :"public-read",
403
+ },
404
+ )
400
405
  expect(object).to receive(:upload_file).
401
- with(anything, content_type: "image/png",
402
- acl: :"public-read",
403
- cache_control: "max-age=31557600")
406
+ with(
407
+ anything,
408
+ {
409
+ content_type: "image/png",
410
+ acl: :"public-read",
411
+ cache_control: "max-age=31557600",
412
+ },
413
+ )
404
414
  @dummy.save
405
415
  end
406
416
 
@@ -445,12 +455,12 @@ describe Paperclip::Storage::S3 do
445
455
  it "uploads original" do
446
456
  expect(@object).to receive(:upload_file).with(
447
457
  anything,
448
- content_type: "image/png",
458
+ { content_type: "image/png" },
449
459
  ).and_return(true)
450
460
  @dummy.avatar.reprocess!
451
461
  expect(@object).to receive(:upload_file).with(
452
462
  anything,
453
- content_type: "image/png",
463
+ { content_type: "image/png" },
454
464
  ).and_return(true)
455
465
  @dummy.avatar.reprocess!
456
466
  end
@@ -458,7 +468,7 @@ describe Paperclip::Storage::S3 do
458
468
  it "doesn't upload original" do
459
469
  expect(@object).to receive(:upload_file).with(
460
470
  anything,
461
- content_type: "image/png",
471
+ { content_type: "image/png" },
462
472
  ).and_return(true)
463
473
  @dummy.avatar.reprocess!
464
474
  end
@@ -500,14 +510,18 @@ describe Paperclip::Storage::S3 do
500
510
  it "uploads original" do
501
511
  expect(@object).to receive(:upload_file).with(
502
512
  anything,
503
- content_type: "image/png",
504
- acl: :"public-read"
513
+ {
514
+ content_type: "image/png",
515
+ acl: :"public-read",
516
+ },
505
517
  ).and_return(true)
506
518
  @dummy.avatar.reprocess!
507
519
  expect(@object).to receive(:upload_file).with(
508
520
  anything,
509
- content_type: "image/png",
510
- acl: :"public-read"
521
+ {
522
+ content_type: "image/png",
523
+ acl: :"public-read",
524
+ },
511
525
  ).and_return(true)
512
526
  @dummy.avatar.reprocess!
513
527
  end
@@ -515,8 +529,10 @@ describe Paperclip::Storage::S3 do
515
529
  it "doesn't upload original" do
516
530
  expect(@object).to receive(:upload_file).with(
517
531
  anything,
518
- content_type: "image/png",
519
- acl: :"public-read"
532
+ {
533
+ content_type: "image/png",
534
+ acl: :"public-read",
535
+ },
520
536
  ).and_return(true)
521
537
  @dummy.avatar.reprocess!
522
538
  end
@@ -725,7 +741,7 @@ describe Paperclip::Storage::S3 do
725
741
  object = double
726
742
  allow(@dummy.avatar).to receive(:s3_object).and_return(object)
727
743
 
728
- expect(object).to receive(:presigned_url).with(:get, expires_in: 3600)
744
+ expect(object).to receive(:presigned_url).with(:get, { expires_in: 3600 })
729
745
  @dummy.avatar.expiring_url
730
746
  end
731
747
  end
@@ -740,8 +756,13 @@ describe Paperclip::Storage::S3 do
740
756
  object = double
741
757
  allow(@dummy.avatar).to receive(:s3_object).and_return(object)
742
758
  expect(object).to receive(:presigned_url).
743
- with(:get, expires_in: 3600,
744
- response_content_disposition: "inline")
759
+ with(
760
+ :get,
761
+ {
762
+ expires_in: 3600,
763
+ response_content_disposition: "inline",
764
+ },
765
+ )
745
766
  @dummy.avatar.expiring_url
746
767
  end
747
768
  end
@@ -763,7 +784,13 @@ describe Paperclip::Storage::S3 do
763
784
  object = double
764
785
  allow(@dummy.avatar).to receive(:s3_object).and_return(object)
765
786
  expect(object).to receive(:presigned_url).
766
- with(:get, expires_in: 3600, response_content_type: "image/png")
787
+ with(
788
+ :get,
789
+ {
790
+ expires_in: 3600,
791
+ response_content_type: "image/png",
792
+ },
793
+ )
767
794
  @dummy.avatar.expiring_url
768
795
  end
769
796
  end
@@ -810,14 +837,14 @@ describe Paperclip::Storage::S3 do
810
837
  it "generates a url for the thumb" do
811
838
  object = double
812
839
  allow(@dummy.avatar).to receive(:s3_object).with(:thumb).and_return(object)
813
- expect(object).to receive(:presigned_url).with(:get, expires_in: 1800)
840
+ expect(object).to receive(:presigned_url).with(:get, { expires_in: 1800 })
814
841
  @dummy.avatar.expiring_url(1800, :thumb)
815
842
  end
816
843
 
817
844
  it "generates a url for the default style" do
818
845
  object = double
819
846
  allow(@dummy.avatar).to receive(:s3_object).with(:original).and_return(object)
820
- expect(object).to receive(:presigned_url).with(:get, expires_in: 1800)
847
+ expect(object).to receive(:presigned_url).with(:get, { expires_in: 1800 })
821
848
  @dummy.avatar.expiring_url(1800)
822
849
  end
823
850
  end
@@ -962,7 +989,7 @@ describe Paperclip::Storage::S3 do
962
989
  object = double
963
990
  allow(@dummy.avatar).to receive(:s3_object).and_return(object)
964
991
  expect(object).to receive(:upload_file).
965
- with(anything, content_type: "image/png", acl: :"public-read")
992
+ with(anything, { content_type: "image/png", acl: :"public-read" })
966
993
  @dummy.save
967
994
  end
968
995
 
@@ -1122,10 +1149,14 @@ describe Paperclip::Storage::S3 do
1122
1149
  allow(@dummy.avatar).to receive(:s3_object).and_return(object)
1123
1150
 
1124
1151
  expect(object).to receive(:upload_file).
1125
- with(anything,
1126
- content_type: "image/png",
1127
- acl: :"public-read",
1128
- cache_control: "max-age=31557600")
1152
+ with(
1153
+ anything,
1154
+ {
1155
+ content_type: "image/png",
1156
+ acl: :"public-read",
1157
+ cache_control: "max-age=31557600",
1158
+ },
1159
+ )
1129
1160
  @dummy.save
1130
1161
  end
1131
1162
 
@@ -1163,10 +1194,14 @@ describe Paperclip::Storage::S3 do
1163
1194
  allow(@dummy.avatar).to receive(:s3_object).and_return(object)
1164
1195
 
1165
1196
  expect(object).to receive(:upload_file).
1166
- with(anything,
1197
+ with(
1198
+ anything,
1199
+ {
1167
1200
  content_type: "image/png",
1168
1201
  acl: :"public-read",
1169
- metadata: { "color" => "red" })
1202
+ metadata: { "color" => "red" },
1203
+ },
1204
+ )
1170
1205
  @dummy.save
1171
1206
  end
1172
1207
 
@@ -1204,10 +1239,14 @@ describe Paperclip::Storage::S3 do
1204
1239
  allow(@dummy.avatar).to receive(:s3_object).and_return(object)
1205
1240
 
1206
1241
  expect(object).to receive(:upload_file).
1207
- with(anything,
1242
+ with(
1243
+ anything,
1244
+ {
1208
1245
  content_type: "image/png",
1209
1246
  acl: :"public-read",
1210
- metadata: { "color" => "red" })
1247
+ metadata: { "color" => "red" },
1248
+ },
1249
+ )
1211
1250
  @dummy.save
1212
1251
  end
1213
1252
 
@@ -1246,10 +1285,14 @@ describe Paperclip::Storage::S3 do
1246
1285
  allow(@dummy.avatar).to receive(:s3_object).and_return(object)
1247
1286
 
1248
1287
  expect(object).to receive(:upload_file).
1249
- with(anything,
1288
+ with(
1289
+ anything,
1290
+ {
1250
1291
  content_type: "image/png",
1251
1292
  acl: :"public-read",
1252
- storage_class: "reduced_redundancy")
1293
+ storage_class: "reduced_redundancy",
1294
+ },
1295
+ )
1253
1296
  @dummy.save
1254
1297
  end
1255
1298
 
@@ -1342,9 +1385,14 @@ describe Paperclip::Storage::S3 do
1342
1385
  allow(@dummy.avatar).to receive(:s3_object).with(style).and_return(object)
1343
1386
 
1344
1387
  expect(object).to receive(:upload_file).
1345
- with(anything, content_type: "image/png",
1346
- acl: :"public-read",
1347
- storage_class: :reduced_redundancy)
1388
+ with(
1389
+ anything,
1390
+ {
1391
+ content_type: "image/png",
1392
+ acl: :"public-read",
1393
+ storage_class: :reduced_redundancy,
1394
+ },
1395
+ )
1348
1396
  end
1349
1397
  @dummy.save
1350
1398
  end
@@ -1387,7 +1435,7 @@ describe Paperclip::Storage::S3 do
1387
1435
  allow(@dummy.avatar).to receive(:s3_object).and_return(object)
1388
1436
 
1389
1437
  expect(object).to receive(:upload_file).
1390
- with(anything, content_type: "image/png", acl: :"public-read")
1438
+ with(anything, { content_type: "image/png", acl: :"public-read" })
1391
1439
  @dummy.save
1392
1440
  end
1393
1441
 
@@ -1426,9 +1474,14 @@ describe Paperclip::Storage::S3 do
1426
1474
  allow(@dummy.avatar).to receive(:s3_object).and_return(object)
1427
1475
 
1428
1476
  expect(object).to receive(:upload_file).
1429
- with(anything, content_type: "image/png",
1430
- acl: :"public-read",
1431
- server_side_encryption: "AES256")
1477
+ with(
1478
+ anything,
1479
+ {
1480
+ content_type: "image/png",
1481
+ acl: :"public-read",
1482
+ server_side_encryption: "AES256",
1483
+ },
1484
+ )
1432
1485
  @dummy.save
1433
1486
  end
1434
1487
 
@@ -1466,10 +1519,14 @@ describe Paperclip::Storage::S3 do
1466
1519
  allow(@dummy.avatar).to receive(:s3_object).and_return(object)
1467
1520
 
1468
1521
  expect(object).to receive(:upload_file).
1469
- with(anything,
1470
- content_type: "image/png",
1471
- acl: :"public-read",
1472
- storage_class: :reduced_redundancy)
1522
+ with(
1523
+ anything,
1524
+ {
1525
+ content_type: "image/png",
1526
+ acl: :"public-read",
1527
+ storage_class: :reduced_redundancy,
1528
+ },
1529
+ )
1473
1530
  @dummy.save
1474
1531
  end
1475
1532
 
@@ -1613,7 +1670,7 @@ describe Paperclip::Storage::S3 do
1613
1670
  allow(@dummy.avatar).to receive(:s3_object).and_return(object)
1614
1671
 
1615
1672
  expect(object).to receive(:upload_file).
1616
- with(anything, content_type: "image/png", acl: :"public-read")
1673
+ with(anything, { content_type: "image/png", acl: :"public-read" })
1617
1674
  @dummy.save
1618
1675
  end
1619
1676
 
@@ -1651,7 +1708,7 @@ describe Paperclip::Storage::S3 do
1651
1708
  allow(@dummy.avatar).to receive(:s3_object).and_return(object)
1652
1709
 
1653
1710
  expect(object).to receive(:upload_file).
1654
- with(anything, content_type: "image/png", acl: :private)
1711
+ with(anything, { content_type: "image/png", acl: :private })
1655
1712
  @dummy.save
1656
1713
  end
1657
1714
 
@@ -1697,8 +1754,10 @@ describe Paperclip::Storage::S3 do
1697
1754
 
1698
1755
  expect(object).to receive(:upload_file).
1699
1756
  with(anything,
1700
- content_type: "image/png",
1701
- acl: style == :thumb ? :public_read : :private)
1757
+ {
1758
+ content_type: "image/png",
1759
+ acl: style == :thumb ? :public_read : :private
1760
+ })
1702
1761
  end
1703
1762
  @dummy.save
1704
1763
  end
@@ -1767,10 +1826,14 @@ describe Paperclip::Storage::S3 do
1767
1826
  allow(@dummy.avatar).to receive(:s3_object).with(style).and_return(object)
1768
1827
 
1769
1828
  expect(object).to receive(:upload_file).
1770
- with(anything,
1771
- content_type: "image/png",
1772
- acl: :"public-read",
1773
- content_disposition: 'attachment; filename="Custom Avatar Name.png"')
1829
+ with(
1830
+ anything,
1831
+ {
1832
+ content_type: "image/png",
1833
+ acl: :"public-read",
1834
+ content_disposition: 'attachment; filename="Custom Avatar Name.png"',
1835
+ },
1836
+ )
1774
1837
  end
1775
1838
  @dummy.save
1776
1839
  end
data/spec/spec_helper.rb CHANGED
@@ -21,6 +21,7 @@ FIXTURES_DIR = File.join(File.dirname(__FILE__), "fixtures")
21
21
  config = YAML::safe_load(IO.read(File.dirname(__FILE__) + "/database.yml"))
22
22
  ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
23
23
  ActiveRecord::Base.establish_connection(config["test"])
24
+ ActiveRecord::Migration.verbose = false
24
25
  if ActiveRecord::VERSION::STRING >= "4.2" &&
25
26
  ActiveRecord::VERSION::STRING < "5.0"
26
27
  ActiveRecord::Base.raise_in_transactional_callbacks = true
@@ -28,15 +28,15 @@ module ModelReconstruction
28
28
 
29
29
  def reset_table(_table_name, &block)
30
30
  block ||= lambda { |_table| true }
31
- ActiveRecord::Base.connection.create_table :dummies, **{ force: true }, &block
31
+ ActiveRecord::Migration.create_table :dummies, **{ force: true }, &block
32
32
  end
33
33
 
34
34
  def modify_table(&block)
35
- ActiveRecord::Base.connection.change_table :dummies, &block
35
+ ActiveRecord::Migration.change_table :dummies, &block
36
36
  end
37
37
 
38
38
  def rebuild_model(options = {})
39
- ActiveRecord::Base.connection.create_table :dummies, force: true do |table|
39
+ ActiveRecord::Migration.create_table :dummies, force: true do |table|
40
40
  table.column :title, :string
41
41
  table.column :other, :string
42
42
  table.column :avatar_file_name, :string
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kt-paperclip
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.2.0
4
+ version: 7.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Surendra Singhi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-30 00:00:00.000000000 Z
11
+ date: 2024-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -70,16 +70,22 @@ dependencies:
70
70
  name: terrapin
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.6.0
76
+ - - "<"
77
+ - !ruby/object:Gem::Version
78
+ version: '2.0'
76
79
  type: :runtime
77
80
  prerelease: false
78
81
  version_requirements: !ruby/object:Gem::Requirement
79
82
  requirements:
80
- - - "~>"
83
+ - - ">="
81
84
  - !ruby/object:Gem::Version
82
85
  version: 0.6.0
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: '2.0'
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: activerecord
85
91
  requirement: !ruby/object:Gem::Requirement
@@ -428,6 +434,7 @@ files:
428
434
  - lib/paperclip/io_adapters/uploaded_file_adapter.rb
429
435
  - lib/paperclip/io_adapters/uri_adapter.rb
430
436
  - lib/paperclip/locales/en.yml
437
+ - lib/paperclip/locales/gd.yml
431
438
  - lib/paperclip/logger.rb
432
439
  - lib/paperclip/matchers.rb
433
440
  - lib/paperclip/matchers/have_attached_file_matcher.rb