carrierwave 1.3.4 → 3.1.4

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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +278 -86
  3. data/lib/carrierwave/compatibility/paperclip.rb +4 -2
  4. data/lib/carrierwave/downloader/base.rb +101 -0
  5. data/lib/carrierwave/downloader/remote_file.rb +68 -0
  6. data/lib/carrierwave/locale/en.yml +9 -6
  7. data/lib/carrierwave/mount.rb +53 -61
  8. data/lib/carrierwave/mounter.rb +169 -77
  9. data/lib/carrierwave/orm/activerecord.rb +23 -58
  10. data/lib/carrierwave/processing/mini_magick.rb +137 -123
  11. data/lib/carrierwave/processing/rmagick.rb +47 -20
  12. data/lib/carrierwave/processing/vips.rb +315 -0
  13. data/lib/carrierwave/processing.rb +1 -0
  14. data/lib/carrierwave/sanitized_file.rb +91 -70
  15. data/lib/carrierwave/storage/abstract.rb +5 -5
  16. data/lib/carrierwave/storage/file.rb +6 -5
  17. data/lib/carrierwave/storage/fog.rb +114 -62
  18. data/lib/carrierwave/storage.rb +1 -0
  19. data/lib/carrierwave/test/matchers.rb +11 -7
  20. data/lib/carrierwave/uploader/cache.rb +40 -24
  21. data/lib/carrierwave/uploader/callbacks.rb +1 -1
  22. data/lib/carrierwave/uploader/configuration.rb +43 -20
  23. data/lib/carrierwave/uploader/content_type_allowlist.rb +62 -0
  24. data/lib/carrierwave/uploader/content_type_denylist.rb +65 -0
  25. data/lib/carrierwave/uploader/dimension.rb +66 -0
  26. data/lib/carrierwave/uploader/download.rb +2 -123
  27. data/lib/carrierwave/uploader/extension_allowlist.rb +63 -0
  28. data/lib/carrierwave/uploader/extension_denylist.rb +64 -0
  29. data/lib/carrierwave/uploader/file_size.rb +2 -2
  30. data/lib/carrierwave/uploader/mountable.rb +6 -0
  31. data/lib/carrierwave/uploader/processing.rb +45 -7
  32. data/lib/carrierwave/uploader/proxy.rb +17 -4
  33. data/lib/carrierwave/uploader/serialization.rb +1 -1
  34. data/lib/carrierwave/uploader/store.rb +73 -7
  35. data/lib/carrierwave/uploader/url.rb +7 -4
  36. data/lib/carrierwave/uploader/versions.rb +161 -111
  37. data/lib/carrierwave/uploader.rb +10 -17
  38. data/lib/carrierwave/utilities/file_name.rb +47 -0
  39. data/lib/carrierwave/utilities/uri.rb +14 -11
  40. data/lib/carrierwave/utilities.rb +1 -0
  41. data/lib/carrierwave/validations/active_model.rb +7 -9
  42. data/lib/carrierwave/version.rb +1 -1
  43. data/lib/carrierwave.rb +22 -17
  44. data/lib/generators/templates/{uploader.rb → uploader.rb.erb} +13 -4
  45. data/lib/generators/uploader_generator.rb +3 -3
  46. metadata +115 -44
  47. data/lib/carrierwave/uploader/content_type_blacklist.rb +0 -48
  48. data/lib/carrierwave/uploader/content_type_whitelist.rb +0 -48
  49. data/lib/carrierwave/uploader/extension_blacklist.rb +0 -51
  50. data/lib/carrierwave/uploader/extension_whitelist.rb +0 -52
@@ -7,11 +7,12 @@ require "carrierwave/uploader/cache"
7
7
  require "carrierwave/uploader/store"
8
8
  require "carrierwave/uploader/download"
9
9
  require "carrierwave/uploader/remove"
10
- require "carrierwave/uploader/extension_whitelist"
11
- require "carrierwave/uploader/extension_blacklist"
12
- require "carrierwave/uploader/content_type_whitelist"
13
- require "carrierwave/uploader/content_type_blacklist"
10
+ require "carrierwave/uploader/extension_allowlist"
11
+ require "carrierwave/uploader/extension_denylist"
12
+ require "carrierwave/uploader/content_type_allowlist"
13
+ require "carrierwave/uploader/content_type_denylist"
14
14
  require "carrierwave/uploader/file_size"
15
+ require "carrierwave/uploader/dimension"
15
16
  require "carrierwave/uploader/processing"
16
17
  require "carrierwave/uploader/versions"
17
18
  require "carrierwave/uploader/default_url"
@@ -43,15 +44,6 @@ module CarrierWave
43
44
  class Base
44
45
  attr_reader :file
45
46
 
46
- ##
47
- # Workaround for class_attribute malfunction when used with Module#prepend
48
- #
49
- if RUBY_VERSION < '2.1.0'
50
- def self.singleton_class?
51
- !ancestors.include? self
52
- end
53
- end
54
-
55
47
  include CarrierWave::Uploader::Configuration
56
48
  include CarrierWave::Uploader::Callbacks
57
49
  include CarrierWave::Uploader::Proxy
@@ -61,11 +53,12 @@ module CarrierWave
61
53
  include CarrierWave::Uploader::Store
62
54
  include CarrierWave::Uploader::Download
63
55
  include CarrierWave::Uploader::Remove
64
- include CarrierWave::Uploader::ExtensionWhitelist
65
- include CarrierWave::Uploader::ExtensionBlacklist
66
- include CarrierWave::Uploader::ContentTypeWhitelist
67
- include CarrierWave::Uploader::ContentTypeBlacklist
56
+ include CarrierWave::Uploader::ExtensionAllowlist
57
+ include CarrierWave::Uploader::ExtensionDenylist
58
+ include CarrierWave::Uploader::ContentTypeAllowlist
59
+ include CarrierWave::Uploader::ContentTypeDenylist
68
60
  include CarrierWave::Uploader::FileSize
61
+ include CarrierWave::Uploader::Dimension
69
62
  include CarrierWave::Uploader::Processing
70
63
  include CarrierWave::Uploader::Versions
71
64
  include CarrierWave::Uploader::DefaultUrl
@@ -0,0 +1,47 @@
1
+ module CarrierWave
2
+ module Utilities
3
+ module FileName
4
+
5
+ ##
6
+ # Returns the part of the filename before the extension. So if a file is called 'test.jpeg'
7
+ # this would return 'test'
8
+ #
9
+ # === Returns
10
+ #
11
+ # [String] the first part of the filename
12
+ #
13
+ def basename
14
+ split_extension(filename)[0] if filename
15
+ end
16
+
17
+ ##
18
+ # Returns the file extension
19
+ #
20
+ # === Returns
21
+ #
22
+ # [String] extension of file or "" if the file has no extension
23
+ #
24
+ def extension
25
+ split_extension(filename)[1] if filename
26
+ end
27
+
28
+ private
29
+
30
+ def split_extension(filename)
31
+ # regular expressions to try for identifying extensions
32
+ extension_matchers = [
33
+ /\A(.+)\.(tar\.([glx]?z|bz2))\z/, # matches "something.tar.gz"
34
+ /\A(.+)\.([^\.]+)\z/ # matches "something.jpg"
35
+ ]
36
+
37
+ extension_matchers.each do |regexp|
38
+ if filename =~ regexp
39
+ return $1, $2
40
+ end
41
+ end
42
+
43
+ [filename, ""] # In case we weren't able to split the extension
44
+ end
45
+ end # FileName
46
+ end # Utilities
47
+ end # CarrierWave
@@ -3,20 +3,23 @@ require 'uri'
3
3
  module CarrierWave
4
4
  module Utilities
5
5
  module Uri
6
- # based on Ruby < 2.0's URI.encode
7
- SAFE_STRING = URI::REGEXP::PATTERN::UNRESERVED + '\/'
8
- UNSAFE = Regexp.new("[^#{SAFE_STRING}]", false)
6
+ # based on Ruby < 2.0's URI.encode
7
+ PATH_SAFE = URI::RFC2396_REGEXP::PATTERN::UNRESERVED + '\/'
8
+ PATH_UNSAFE = Regexp.new("[^#{PATH_SAFE}]", false)
9
+ NON_ASCII = /[^[:ascii:]]/.freeze
9
10
 
10
11
  private
12
+
11
13
  def encode_path(path)
12
- path.to_s.gsub(UNSAFE) do
13
- us = $&
14
- tmp = ''
15
- us.each_byte do |uc|
16
- tmp << sprintf('%%%02X', uc)
17
- end
18
- tmp
19
- end
14
+ URI::DEFAULT_PARSER.escape(path, PATH_UNSAFE)
15
+ end
16
+
17
+ def encode_non_ascii(str)
18
+ URI::DEFAULT_PARSER.escape(str, NON_ASCII)
19
+ end
20
+
21
+ def decode_uri(str)
22
+ URI::DEFAULT_PARSER.unescape(str)
20
23
  end
21
24
  end # Uri
22
25
  end # Utilities
@@ -1,4 +1,5 @@
1
1
  require 'carrierwave/utilities/uri'
2
+ require 'carrierwave/utilities/file_name'
2
3
 
3
4
  module CarrierWave
4
5
  module Utilities
@@ -11,9 +11,8 @@ module CarrierWave
11
11
  class ProcessingValidator < ::ActiveModel::EachValidator
12
12
 
13
13
  def validate_each(record, attribute, value)
14
- if e = record.__send__("#{attribute}_processing_error")
15
- message = (e.message == e.class.to_s) ? :carrierwave_processing_error : e.message
16
- record.errors.add(attribute, message)
14
+ record.__send__("#{attribute}_processing_errors").each do |e|
15
+ record.errors.add(attribute, :carrierwave_processing_error, message: (e.message != e.class.to_s) && e.message)
17
16
  end
18
17
  end
19
18
  end
@@ -21,9 +20,8 @@ module CarrierWave
21
20
  class IntegrityValidator < ::ActiveModel::EachValidator
22
21
 
23
22
  def validate_each(record, attribute, value)
24
- if e = record.__send__("#{attribute}_integrity_error")
25
- message = (e.message == e.class.to_s) ? :carrierwave_integrity_error : e.message
26
- record.errors.add(attribute, message)
23
+ record.__send__("#{attribute}_integrity_errors").each do |e|
24
+ record.errors.add(attribute, :carrierwave_integrity_error, message: (e.message != e.class.to_s) && e.message)
27
25
  end
28
26
  end
29
27
  end
@@ -31,9 +29,8 @@ module CarrierWave
31
29
  class DownloadValidator < ::ActiveModel::EachValidator
32
30
 
33
31
  def validate_each(record, attribute, value)
34
- if e = record.__send__("#{attribute}_download_error")
35
- message = (e.message == e.class.to_s) ? :carrierwave_download_error : e.message
36
- record.errors.add(attribute, message)
32
+ record.__send__("#{attribute}_download_errors").each do |e|
33
+ record.errors.add(attribute, :carrierwave_download_error, message: (e.message != e.class.to_s) && e.message)
37
34
  end
38
35
  end
39
36
  end
@@ -58,6 +55,7 @@ module CarrierWave
58
55
  def validates_processing_of(*attr_names)
59
56
  validates_with ProcessingValidator, _merge_attributes(attr_names)
60
57
  end
58
+
61
59
  #
62
60
  ##
63
61
  # Makes the record invalid if the remote file couldn't be downloaded
@@ -1,3 +1,3 @@
1
1
  module CarrierWave
2
- VERSION = "1.3.4"
2
+ VERSION = "3.1.4".freeze
3
3
  end
data/lib/carrierwave.rb CHANGED
@@ -3,6 +3,7 @@ require 'active_support/core_ext/object/blank'
3
3
  require 'active_support/core_ext/object/try'
4
4
  require 'active_support/core_ext/class/attribute'
5
5
  require 'active_support/concern'
6
+ require 'active_support/deprecation'
6
7
 
7
8
  module CarrierWave
8
9
 
@@ -21,20 +22,15 @@ module CarrierWave
21
22
  def tmp_path
22
23
  @tmp_path ||= File.expand_path(File.join('..', 'tmp'), root)
23
24
  end
25
+
26
+ def deprecator
27
+ @deprecator ||= ActiveSupport::Deprecation.new("#{CarrierWave::VERSION.split('.')[0].to_i + 1}.0", "CarrierWave")
28
+ end
24
29
  end
25
30
 
26
31
  end
27
32
 
28
- if defined?(Merb)
29
-
30
- CarrierWave.root = Merb.dir_for(:public)
31
- Merb::BootLoader.before_app_loads do
32
- # Setup path for uploaders and load all of them before classes are loaded
33
- Merb.push_path(:uploaders, Merb.root / 'app' / 'uploaders', '*.rb')
34
- Dir.glob(File.join(Merb.load_paths[:uploaders])).each {|f| require f }
35
- end
36
-
37
- elsif defined?(Jets)
33
+ if defined?(Jets)
38
34
 
39
35
  module CarrierWave
40
36
  class Turbine < Jets::Turbine
@@ -72,6 +68,14 @@ elsif defined?(Rails)
72
68
  require 'carrierwave/orm/activerecord'
73
69
  end
74
70
  end
71
+
72
+ initializer "carrierwave.deprecator" do |app|
73
+ app.deprecators[:carrierwave] = CarrierWave.deprecator if app.respond_to?(:deprecators)
74
+ end
75
+
76
+ config.before_eager_load do
77
+ CarrierWave::Storage::Fog.eager_load
78
+ end
75
79
  end
76
80
  end
77
81
 
@@ -80,13 +84,14 @@ elsif defined?(Sinatra)
80
84
  CarrierWave.root = File.join(PADRINO_ROOT, "public")
81
85
  else
82
86
 
83
- CarrierWave.root = if Sinatra::Application.respond_to?(:public_folder)
84
- # Sinatra >= 1.3
85
- Sinatra::Application.public_folder
86
- else
87
- # Sinatra < 1.3
88
- Sinatra::Application.public
89
- end
87
+ CarrierWave.root =
88
+ if Sinatra::Application.respond_to?(:public_folder)
89
+ # Sinatra >= 1.3
90
+ Sinatra::Application.public_folder
91
+ else
92
+ # Sinatra < 1.3
93
+ Sinatra::Application.public
94
+ end
90
95
  end
91
96
  end
92
97
 
@@ -1,7 +1,8 @@
1
1
  class <%= class_name %>Uploader < CarrierWave::Uploader::Base
2
- # Include RMagick or MiniMagick support:
2
+ # Include RMagick, MiniMagick, or Vips support:
3
3
  # include CarrierWave::RMagick
4
4
  # include CarrierWave::MiniMagick
5
+ # include CarrierWave::Vips
5
6
 
6
7
  # Choose what kind of storage to use for this uploader:
7
8
  storage :file
@@ -33,15 +34,23 @@ class <%= class_name %>Uploader < CarrierWave::Uploader::Base
33
34
  # process resize_to_fit: [50, 50]
34
35
  # end
35
36
 
36
- # Add a white list of extensions which are allowed to be uploaded.
37
+ # Add an allowlist of extensions which are allowed to be uploaded.
37
38
  # For images you might use something like this:
38
- # def extension_whitelist
39
+ # def extension_allowlist
39
40
  # %w(jpg jpeg gif png)
40
41
  # end
41
42
 
43
+ # Add a content_type_allowlist to restrict uploads by MIME type.
44
+ # Without it, a user could upload a harmful file
45
+ # with a safe extension (content-type spoofing).
46
+ # For the previous extension_allowlist you might use something like this:
47
+ # def content_type_allowlist
48
+ # /image\//
49
+ # end
50
+
42
51
  # Override the filename of the uploaded files:
43
52
  # Avoid using model.id or version_name here, see uploader/store.rb for details.
44
53
  # def filename
45
- # "something.jpg" if original_filename
54
+ # "something.jpg"
46
55
  # end
47
56
  end
@@ -1,7 +1,7 @@
1
1
  class UploaderGenerator < Rails::Generators::NamedBase
2
- source_root File.expand_path("../templates", __FILE__)
2
+ source_root File.expand_path('templates', __dir__)
3
3
 
4
4
  def create_uploader_file
5
- template "uploader.rb", File.join('app/uploaders', class_path, "#{file_name}_uploader.rb")
5
+ template "uploader.rb.erb", File.join('app/uploaders', class_path, "#{file_name}_uploader.rb")
6
6
  end
7
- end
7
+ end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carrierwave
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.4
4
+ version: 3.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Nicklas
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-09-24 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activesupport
@@ -16,90 +15,124 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: 4.0.0
18
+ version: 6.0.0
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: 4.0.0
25
+ version: 6.0.0
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: activemodel
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: 4.0.0
32
+ version: 6.0.0
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: 4.0.0
39
+ version: 6.0.0
41
40
  - !ruby/object:Gem::Dependency
42
- name: mime-types
41
+ name: image_processing
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - ">="
46
45
  - !ruby/object:Gem::Version
47
- version: '1.16'
46
+ version: '1.1'
47
+ - - "<"
48
+ - !ruby/object:Gem::Version
49
+ version: '3'
48
50
  type: :runtime
49
51
  prerelease: false
50
52
  version_requirements: !ruby/object:Gem::Requirement
51
53
  requirements:
52
54
  - - ">="
53
55
  - !ruby/object:Gem::Version
54
- version: '1.16'
56
+ version: '1.1'
57
+ - - "<"
58
+ - !ruby/object:Gem::Version
59
+ version: '3'
55
60
  - !ruby/object:Gem::Dependency
56
- name: ssrf_filter
61
+ name: marcel
57
62
  requirement: !ruby/object:Gem::Requirement
58
63
  requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 1.0.0
67
+ - - "<"
68
+ - !ruby/object:Gem::Version
69
+ version: '3'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 1.0.0
59
77
  - - "<"
60
78
  - !ruby/object:Gem::Version
61
- version: 1.1.0
79
+ version: '3'
80
+ - !ruby/object:Gem::Dependency
81
+ name: addressable
82
+ requirement: !ruby/object:Gem::Requirement
83
+ requirements:
62
84
  - - "~>"
63
85
  - !ruby/object:Gem::Version
64
- version: '1.0'
86
+ version: '2.6'
65
87
  type: :runtime
66
88
  prerelease: false
67
89
  version_requirements: !ruby/object:Gem::Requirement
68
90
  requirements:
69
- - - "<"
91
+ - - "~>"
70
92
  - !ruby/object:Gem::Version
71
- version: 1.1.0
93
+ version: '2.6'
94
+ - !ruby/object:Gem::Dependency
95
+ name: ssrf_filter
96
+ requirement: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '1.0'
101
+ type: :runtime
102
+ prerelease: false
103
+ version_requirements: !ruby/object:Gem::Requirement
104
+ requirements:
72
105
  - - "~>"
73
106
  - !ruby/object:Gem::Version
74
107
  version: '1.0'
75
108
  - !ruby/object:Gem::Dependency
76
- name: rails
109
+ name: csv
77
110
  requirement: !ruby/object:Gem::Requirement
78
111
  requirements:
79
- - - ">="
112
+ - - "~>"
80
113
  - !ruby/object:Gem::Version
81
- version: 5.0.0
114
+ version: '3.0'
82
115
  type: :development
83
116
  prerelease: false
84
117
  version_requirements: !ruby/object:Gem::Requirement
85
118
  requirements:
86
- - - ">="
119
+ - - "~>"
87
120
  - !ruby/object:Gem::Version
88
- version: 5.0.0
121
+ version: '3.0'
89
122
  - !ruby/object:Gem::Dependency
90
123
  name: cucumber
91
124
  requirement: !ruby/object:Gem::Requirement
92
125
  requirements:
93
- - - "~>"
126
+ - - ">="
94
127
  - !ruby/object:Gem::Version
95
- version: '2.3'
128
+ version: '0'
96
129
  type: :development
97
130
  prerelease: false
98
131
  version_requirements: !ruby/object:Gem::Requirement
99
132
  requirements:
100
- - - "~>"
133
+ - - ">="
101
134
  - !ruby/object:Gem::Version
102
- version: '2.3'
135
+ version: '0'
103
136
  - !ruby/object:Gem::Dependency
104
137
  name: rspec
105
138
  requirement: !ruby/object:Gem::Requirement
@@ -115,7 +148,7 @@ dependencies:
115
148
  - !ruby/object:Gem::Version
116
149
  version: '3.4'
117
150
  - !ruby/object:Gem::Dependency
118
- name: webmock
151
+ name: rspec-retry
119
152
  requirement: !ruby/object:Gem::Requirement
120
153
  requirements:
121
154
  - - ">="
@@ -129,21 +162,21 @@ dependencies:
129
162
  - !ruby/object:Gem::Version
130
163
  version: '0'
131
164
  - !ruby/object:Gem::Dependency
132
- name: fog-core
165
+ name: rubocop
133
166
  requirement: !ruby/object:Gem::Requirement
134
167
  requirements:
135
168
  - - "~>"
136
169
  - !ruby/object:Gem::Version
137
- version: 2.1.0
170
+ version: '1.28'
138
171
  type: :development
139
172
  prerelease: false
140
173
  version_requirements: !ruby/object:Gem::Requirement
141
174
  requirements:
142
175
  - - "~>"
143
176
  - !ruby/object:Gem::Version
144
- version: 2.1.0
177
+ version: '1.28'
145
178
  - !ruby/object:Gem::Dependency
146
- name: fog-aws
179
+ name: webmock
147
180
  requirement: !ruby/object:Gem::Requirement
148
181
  requirements:
149
182
  - - ">="
@@ -157,7 +190,7 @@ dependencies:
157
190
  - !ruby/object:Gem::Version
158
191
  version: '0'
159
192
  - !ruby/object:Gem::Dependency
160
- name: fog-google
193
+ name: fog-aws
161
194
  requirement: !ruby/object:Gem::Requirement
162
195
  requirements:
163
196
  - - ">="
@@ -170,6 +203,26 @@ dependencies:
170
203
  - - ">="
171
204
  - !ruby/object:Gem::Version
172
205
  version: '0'
206
+ - !ruby/object:Gem::Dependency
207
+ name: fog-google
208
+ requirement: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - "~>"
211
+ - !ruby/object:Gem::Version
212
+ version: '1.7'
213
+ - - "!="
214
+ - !ruby/object:Gem::Version
215
+ version: 1.12.1
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '1.7'
223
+ - - "!="
224
+ - !ruby/object:Gem::Version
225
+ version: 1.12.1
173
226
  - !ruby/object:Gem::Dependency
174
227
  name: fog-local
175
228
  requirement: !ruby/object:Gem::Requirement
@@ -185,7 +238,7 @@ dependencies:
185
238
  - !ruby/object:Gem::Version
186
239
  version: '0'
187
240
  - !ruby/object:Gem::Dependency
188
- name: fog-rackspace
241
+ name: mini_magick
189
242
  requirement: !ruby/object:Gem::Requirement
190
243
  requirements:
191
244
  - - ">="
@@ -199,19 +252,19 @@ dependencies:
199
252
  - !ruby/object:Gem::Version
200
253
  version: '0'
201
254
  - !ruby/object:Gem::Dependency
202
- name: mini_magick
255
+ name: ruby-vips
203
256
  requirement: !ruby/object:Gem::Requirement
204
257
  requirements:
205
258
  - - ">="
206
259
  - !ruby/object:Gem::Version
207
- version: 3.6.0
260
+ version: '0'
208
261
  type: :development
209
262
  prerelease: false
210
263
  version_requirements: !ruby/object:Gem::Requirement
211
264
  requirements:
212
265
  - - ">="
213
266
  - !ruby/object:Gem::Version
214
- version: 3.6.0
267
+ version: '0'
215
268
  - !ruby/object:Gem::Dependency
216
269
  name: rmagick
217
270
  requirement: !ruby/object:Gem::Requirement
@@ -268,6 +321,20 @@ dependencies:
268
321
  - - ">="
269
322
  - !ruby/object:Gem::Version
270
323
  version: '0'
324
+ - !ruby/object:Gem::Dependency
325
+ name: pry-byebug
326
+ requirement: !ruby/object:Gem::Requirement
327
+ requirements:
328
+ - - ">="
329
+ - !ruby/object:Gem::Version
330
+ version: '0'
331
+ type: :development
332
+ prerelease: false
333
+ version_requirements: !ruby/object:Gem::Requirement
334
+ requirements:
335
+ - - ">="
336
+ - !ruby/object:Gem::Version
337
+ version: '0'
271
338
  description: Upload files in your Ruby applications, map them to a range of ORMs,
272
339
  store them on different backends.
273
340
  email:
@@ -280,6 +347,8 @@ files:
280
347
  - README.md
281
348
  - lib/carrierwave.rb
282
349
  - lib/carrierwave/compatibility/paperclip.rb
350
+ - lib/carrierwave/downloader/base.rb
351
+ - lib/carrierwave/downloader/remote_file.rb
283
352
  - lib/carrierwave/error.rb
284
353
  - lib/carrierwave/locale/en.yml
285
354
  - lib/carrierwave/mount.rb
@@ -288,6 +357,7 @@ files:
288
357
  - lib/carrierwave/processing.rb
289
358
  - lib/carrierwave/processing/mini_magick.rb
290
359
  - lib/carrierwave/processing/rmagick.rb
360
+ - lib/carrierwave/processing/vips.rb
291
361
  - lib/carrierwave/sanitized_file.rb
292
362
  - lib/carrierwave/storage.rb
293
363
  - lib/carrierwave/storage/abstract.rb
@@ -298,12 +368,13 @@ files:
298
368
  - lib/carrierwave/uploader/cache.rb
299
369
  - lib/carrierwave/uploader/callbacks.rb
300
370
  - lib/carrierwave/uploader/configuration.rb
301
- - lib/carrierwave/uploader/content_type_blacklist.rb
302
- - lib/carrierwave/uploader/content_type_whitelist.rb
371
+ - lib/carrierwave/uploader/content_type_allowlist.rb
372
+ - lib/carrierwave/uploader/content_type_denylist.rb
303
373
  - lib/carrierwave/uploader/default_url.rb
374
+ - lib/carrierwave/uploader/dimension.rb
304
375
  - lib/carrierwave/uploader/download.rb
305
- - lib/carrierwave/uploader/extension_blacklist.rb
306
- - lib/carrierwave/uploader/extension_whitelist.rb
376
+ - lib/carrierwave/uploader/extension_allowlist.rb
377
+ - lib/carrierwave/uploader/extension_denylist.rb
307
378
  - lib/carrierwave/uploader/file_size.rb
308
379
  - lib/carrierwave/uploader/mountable.rb
309
380
  - lib/carrierwave/uploader/processing.rb
@@ -314,16 +385,17 @@ files:
314
385
  - lib/carrierwave/uploader/url.rb
315
386
  - lib/carrierwave/uploader/versions.rb
316
387
  - lib/carrierwave/utilities.rb
388
+ - lib/carrierwave/utilities/file_name.rb
317
389
  - lib/carrierwave/utilities/uri.rb
318
390
  - lib/carrierwave/validations/active_model.rb
319
391
  - lib/carrierwave/version.rb
320
- - lib/generators/templates/uploader.rb
392
+ - lib/generators/templates/uploader.rb.erb
321
393
  - lib/generators/uploader_generator.rb
322
394
  homepage: https://github.com/carrierwaveuploader/carrierwave
323
395
  licenses:
324
396
  - MIT
325
- metadata: {}
326
- post_install_message:
397
+ metadata:
398
+ changelog_uri: https://github.com/carrierwaveuploader/carrierwave/blob/master/CHANGELOG.md
327
399
  rdoc_options:
328
400
  - "--main"
329
401
  require_paths:
@@ -332,15 +404,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
332
404
  requirements:
333
405
  - - ">="
334
406
  - !ruby/object:Gem::Version
335
- version: 2.0.0
407
+ version: 2.5.0
336
408
  required_rubygems_version: !ruby/object:Gem::Requirement
337
409
  requirements:
338
410
  - - ">="
339
411
  - !ruby/object:Gem::Version
340
412
  version: '0'
341
413
  requirements: []
342
- rubygems_version: 3.4.6
343
- signing_key:
414
+ rubygems_version: 4.0.19
344
415
  specification_version: 4
345
416
  summary: Ruby file upload library
346
417
  test_files: []