kt-paperclip 7.2.0 → 7.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ada7e8b864e1b23b9bd7064be5e30202ce2f89869de43d136df1a915951fc97d
4
- data.tar.gz: fbe391dc1f775274f4e3f6972991c2883fc30c5d4970c925b43a48c651c6f9e3
3
+ metadata.gz: 206e4e7dd6b6f2ad56c7a0395e9b845a8033c7efa20f19f4ef5c33d09edcbf39
4
+ data.tar.gz: 492bfb36e312bd31c4511a91f6b0b4d779d31b5d098f616cb75871c2a6a4e527
5
5
  SHA512:
6
- metadata.gz: bb686418ce534696a30cb0610b7af967b608a889c2f1efb68ce577ab65334df366177674887cadb98be6739b54c06158cae9de7d98a8adaf011d23e245128ed8
7
- data.tar.gz: b19cd6cd395d65fa25d90f63f597fbe4585890a2c257d0636791613410ea53b6d9df441512e581160e4c16e2d3e0e8dff55910038165449516a3c00067a99eb3
6
+ metadata.gz: 86a39461732fd83389253cc444168d30a9af957362d90694e04852d86619e3d4ac4a84ea71db0d904784de74d5c5e019bdcec86fc18484fce2e26568cf390d55
7
+ data.tar.gz: 9506c9fc401cb9ccee3dcfe9186ec8787df2abdc3472f947592d7a79a2e6c32e917cc3eae2de1bfc49f366129a67f793c436b69ecafe501aee0fb7c265662bdc
data/NEWS CHANGED
@@ -1,5 +1,6 @@
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
+ * Improvement: Support file extension names both as symbols and strings for :content_type_mappings
3
+ * 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
4
 
4
5
  7.0.0 (2021-05-28)
5
6
  * 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
@@ -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.1" unless defined?(Paperclip::VERSION)
3
3
  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] = {}
@@ -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
@@ -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
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.1
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: 2023-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -428,6 +428,7 @@ files:
428
428
  - lib/paperclip/io_adapters/uploaded_file_adapter.rb
429
429
  - lib/paperclip/io_adapters/uri_adapter.rb
430
430
  - lib/paperclip/locales/en.yml
431
+ - lib/paperclip/locales/gd.yml
431
432
  - lib/paperclip/logger.rb
432
433
  - lib/paperclip/matchers.rb
433
434
  - lib/paperclip/matchers/have_attached_file_matcher.rb