carrierwave 1.3.4 → 3.1.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 +4 -4
- data/README.md +278 -86
- data/lib/carrierwave/compatibility/paperclip.rb +4 -2
- data/lib/carrierwave/downloader/base.rb +101 -0
- data/lib/carrierwave/downloader/remote_file.rb +68 -0
- data/lib/carrierwave/locale/en.yml +9 -6
- data/lib/carrierwave/mount.rb +53 -61
- data/lib/carrierwave/mounter.rb +169 -77
- data/lib/carrierwave/orm/activerecord.rb +23 -58
- data/lib/carrierwave/processing/mini_magick.rb +137 -123
- data/lib/carrierwave/processing/rmagick.rb +47 -20
- data/lib/carrierwave/processing/vips.rb +315 -0
- data/lib/carrierwave/processing.rb +1 -0
- data/lib/carrierwave/sanitized_file.rb +83 -70
- data/lib/carrierwave/storage/abstract.rb +5 -5
- data/lib/carrierwave/storage/file.rb +6 -5
- data/lib/carrierwave/storage/fog.rb +114 -62
- data/lib/carrierwave/storage.rb +1 -0
- data/lib/carrierwave/test/matchers.rb +11 -7
- data/lib/carrierwave/uploader/cache.rb +40 -24
- data/lib/carrierwave/uploader/callbacks.rb +1 -1
- data/lib/carrierwave/uploader/configuration.rb +42 -19
- data/lib/carrierwave/uploader/content_type_allowlist.rb +62 -0
- data/lib/carrierwave/uploader/content_type_denylist.rb +62 -0
- data/lib/carrierwave/uploader/dimension.rb +66 -0
- data/lib/carrierwave/uploader/download.rb +2 -123
- data/lib/carrierwave/uploader/extension_allowlist.rb +63 -0
- data/lib/carrierwave/uploader/extension_denylist.rb +64 -0
- data/lib/carrierwave/uploader/file_size.rb +2 -2
- data/lib/carrierwave/uploader/mountable.rb +6 -0
- data/lib/carrierwave/uploader/processing.rb +45 -7
- data/lib/carrierwave/uploader/proxy.rb +17 -4
- data/lib/carrierwave/uploader/serialization.rb +1 -1
- data/lib/carrierwave/uploader/store.rb +73 -7
- data/lib/carrierwave/uploader/url.rb +7 -4
- data/lib/carrierwave/uploader/versions.rb +161 -111
- data/lib/carrierwave/uploader.rb +10 -17
- data/lib/carrierwave/utilities/file_name.rb +47 -0
- data/lib/carrierwave/utilities/uri.rb +14 -11
- data/lib/carrierwave/utilities.rb +1 -0
- data/lib/carrierwave/validations/active_model.rb +7 -9
- data/lib/carrierwave/version.rb +1 -1
- data/lib/carrierwave.rb +22 -17
- data/lib/generators/templates/{uploader.rb → uploader.rb.erb} +5 -4
- data/lib/generators/uploader_generator.rb +3 -3
- metadata +94 -47
- data/lib/carrierwave/uploader/content_type_blacklist.rb +0 -48
- data/lib/carrierwave/uploader/content_type_whitelist.rb +0 -48
- data/lib/carrierwave/uploader/extension_blacklist.rb +0 -51
- data/lib/carrierwave/uploader/extension_whitelist.rb +0 -52
data/lib/carrierwave/uploader.rb
CHANGED
|
@@ -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/
|
|
11
|
-
require "carrierwave/uploader/
|
|
12
|
-
require "carrierwave/uploader/
|
|
13
|
-
require "carrierwave/uploader/
|
|
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::
|
|
65
|
-
include CarrierWave::Uploader::
|
|
66
|
-
include CarrierWave::Uploader::
|
|
67
|
-
include CarrierWave::Uploader::
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
|
@@ -11,9 +11,8 @@ module CarrierWave
|
|
|
11
11
|
class ProcessingValidator < ::ActiveModel::EachValidator
|
|
12
12
|
|
|
13
13
|
def validate_each(record, attribute, value)
|
|
14
|
-
|
|
15
|
-
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
|
-
|
|
25
|
-
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
|
-
|
|
35
|
-
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
|
data/lib/carrierwave/version.rb
CHANGED
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?(
|
|
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 =
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
|
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,15 @@ class <%= class_name %>Uploader < CarrierWave::Uploader::Base
|
|
|
33
34
|
# process resize_to_fit: [50, 50]
|
|
34
35
|
# end
|
|
35
36
|
|
|
36
|
-
# Add
|
|
37
|
+
# Add an allowlist of extensions which are allowed to be uploaded.
|
|
37
38
|
# For images you might use something like this:
|
|
38
|
-
# def
|
|
39
|
+
# def extension_allowlist
|
|
39
40
|
# %w(jpg jpeg gif png)
|
|
40
41
|
# end
|
|
41
42
|
|
|
42
43
|
# Override the filename of the uploaded files:
|
|
43
44
|
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
|
44
45
|
# def filename
|
|
45
|
-
# "something.jpg"
|
|
46
|
+
# "something.jpg"
|
|
46
47
|
# end
|
|
47
48
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
class UploaderGenerator < Rails::Generators::NamedBase
|
|
2
|
-
source_root File.expand_path(
|
|
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,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: carrierwave
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 3.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jonas Nicklas
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2025-04-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -16,90 +16,112 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 6.0.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
26
|
+
version: 6.0.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: activemodel
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: 6.0.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
40
|
+
version: 6.0.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: image_processing
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '1.
|
|
47
|
+
version: '1.1'
|
|
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: '1.
|
|
54
|
+
version: '1.1'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
56
|
+
name: marcel
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- - "
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: 1.0.0
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
60
67
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 1.
|
|
68
|
+
version: 1.0.0
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: addressable
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
62
73
|
- - "~>"
|
|
63
74
|
- !ruby/object:Gem::Version
|
|
64
|
-
version: '
|
|
75
|
+
version: '2.6'
|
|
65
76
|
type: :runtime
|
|
66
77
|
prerelease: false
|
|
67
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
68
79
|
requirements:
|
|
69
|
-
- - "
|
|
80
|
+
- - "~>"
|
|
70
81
|
- !ruby/object:Gem::Version
|
|
71
|
-
version:
|
|
82
|
+
version: '2.6'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: ssrf_filter
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '1.0'
|
|
90
|
+
type: :runtime
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
72
94
|
- - "~>"
|
|
73
95
|
- !ruby/object:Gem::Version
|
|
74
96
|
version: '1.0'
|
|
75
97
|
- !ruby/object:Gem::Dependency
|
|
76
|
-
name:
|
|
98
|
+
name: csv
|
|
77
99
|
requirement: !ruby/object:Gem::Requirement
|
|
78
100
|
requirements:
|
|
79
|
-
- - "
|
|
101
|
+
- - "~>"
|
|
80
102
|
- !ruby/object:Gem::Version
|
|
81
|
-
version:
|
|
103
|
+
version: '3.0'
|
|
82
104
|
type: :development
|
|
83
105
|
prerelease: false
|
|
84
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
85
107
|
requirements:
|
|
86
|
-
- - "
|
|
108
|
+
- - "~>"
|
|
87
109
|
- !ruby/object:Gem::Version
|
|
88
|
-
version:
|
|
110
|
+
version: '3.0'
|
|
89
111
|
- !ruby/object:Gem::Dependency
|
|
90
112
|
name: cucumber
|
|
91
113
|
requirement: !ruby/object:Gem::Requirement
|
|
92
114
|
requirements:
|
|
93
|
-
- - "
|
|
115
|
+
- - ">="
|
|
94
116
|
- !ruby/object:Gem::Version
|
|
95
|
-
version: '
|
|
117
|
+
version: '0'
|
|
96
118
|
type: :development
|
|
97
119
|
prerelease: false
|
|
98
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
99
121
|
requirements:
|
|
100
|
-
- - "
|
|
122
|
+
- - ">="
|
|
101
123
|
- !ruby/object:Gem::Version
|
|
102
|
-
version: '
|
|
124
|
+
version: '0'
|
|
103
125
|
- !ruby/object:Gem::Dependency
|
|
104
126
|
name: rspec
|
|
105
127
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -115,7 +137,7 @@ dependencies:
|
|
|
115
137
|
- !ruby/object:Gem::Version
|
|
116
138
|
version: '3.4'
|
|
117
139
|
- !ruby/object:Gem::Dependency
|
|
118
|
-
name:
|
|
140
|
+
name: rspec-retry
|
|
119
141
|
requirement: !ruby/object:Gem::Requirement
|
|
120
142
|
requirements:
|
|
121
143
|
- - ">="
|
|
@@ -129,21 +151,21 @@ dependencies:
|
|
|
129
151
|
- !ruby/object:Gem::Version
|
|
130
152
|
version: '0'
|
|
131
153
|
- !ruby/object:Gem::Dependency
|
|
132
|
-
name:
|
|
154
|
+
name: rubocop
|
|
133
155
|
requirement: !ruby/object:Gem::Requirement
|
|
134
156
|
requirements:
|
|
135
157
|
- - "~>"
|
|
136
158
|
- !ruby/object:Gem::Version
|
|
137
|
-
version:
|
|
159
|
+
version: '1.28'
|
|
138
160
|
type: :development
|
|
139
161
|
prerelease: false
|
|
140
162
|
version_requirements: !ruby/object:Gem::Requirement
|
|
141
163
|
requirements:
|
|
142
164
|
- - "~>"
|
|
143
165
|
- !ruby/object:Gem::Version
|
|
144
|
-
version:
|
|
166
|
+
version: '1.28'
|
|
145
167
|
- !ruby/object:Gem::Dependency
|
|
146
|
-
name:
|
|
168
|
+
name: webmock
|
|
147
169
|
requirement: !ruby/object:Gem::Requirement
|
|
148
170
|
requirements:
|
|
149
171
|
- - ">="
|
|
@@ -157,7 +179,7 @@ dependencies:
|
|
|
157
179
|
- !ruby/object:Gem::Version
|
|
158
180
|
version: '0'
|
|
159
181
|
- !ruby/object:Gem::Dependency
|
|
160
|
-
name: fog-
|
|
182
|
+
name: fog-aws
|
|
161
183
|
requirement: !ruby/object:Gem::Requirement
|
|
162
184
|
requirements:
|
|
163
185
|
- - ">="
|
|
@@ -171,21 +193,27 @@ dependencies:
|
|
|
171
193
|
- !ruby/object:Gem::Version
|
|
172
194
|
version: '0'
|
|
173
195
|
- !ruby/object:Gem::Dependency
|
|
174
|
-
name: fog-
|
|
196
|
+
name: fog-google
|
|
175
197
|
requirement: !ruby/object:Gem::Requirement
|
|
176
198
|
requirements:
|
|
177
|
-
- - "
|
|
199
|
+
- - "~>"
|
|
178
200
|
- !ruby/object:Gem::Version
|
|
179
|
-
version: '
|
|
201
|
+
version: '1.7'
|
|
202
|
+
- - "!="
|
|
203
|
+
- !ruby/object:Gem::Version
|
|
204
|
+
version: 1.12.1
|
|
180
205
|
type: :development
|
|
181
206
|
prerelease: false
|
|
182
207
|
version_requirements: !ruby/object:Gem::Requirement
|
|
183
208
|
requirements:
|
|
184
|
-
- - "
|
|
209
|
+
- - "~>"
|
|
185
210
|
- !ruby/object:Gem::Version
|
|
186
|
-
version: '
|
|
211
|
+
version: '1.7'
|
|
212
|
+
- - "!="
|
|
213
|
+
- !ruby/object:Gem::Version
|
|
214
|
+
version: 1.12.1
|
|
187
215
|
- !ruby/object:Gem::Dependency
|
|
188
|
-
name: fog-
|
|
216
|
+
name: fog-local
|
|
189
217
|
requirement: !ruby/object:Gem::Requirement
|
|
190
218
|
requirements:
|
|
191
219
|
- - ">="
|
|
@@ -204,14 +232,14 @@ dependencies:
|
|
|
204
232
|
requirements:
|
|
205
233
|
- - ">="
|
|
206
234
|
- !ruby/object:Gem::Version
|
|
207
|
-
version:
|
|
235
|
+
version: '0'
|
|
208
236
|
type: :development
|
|
209
237
|
prerelease: false
|
|
210
238
|
version_requirements: !ruby/object:Gem::Requirement
|
|
211
239
|
requirements:
|
|
212
240
|
- - ">="
|
|
213
241
|
- !ruby/object:Gem::Version
|
|
214
|
-
version:
|
|
242
|
+
version: '0'
|
|
215
243
|
- !ruby/object:Gem::Dependency
|
|
216
244
|
name: rmagick
|
|
217
245
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -268,6 +296,20 @@ dependencies:
|
|
|
268
296
|
- - ">="
|
|
269
297
|
- !ruby/object:Gem::Version
|
|
270
298
|
version: '0'
|
|
299
|
+
- !ruby/object:Gem::Dependency
|
|
300
|
+
name: pry-byebug
|
|
301
|
+
requirement: !ruby/object:Gem::Requirement
|
|
302
|
+
requirements:
|
|
303
|
+
- - ">="
|
|
304
|
+
- !ruby/object:Gem::Version
|
|
305
|
+
version: '0'
|
|
306
|
+
type: :development
|
|
307
|
+
prerelease: false
|
|
308
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
309
|
+
requirements:
|
|
310
|
+
- - ">="
|
|
311
|
+
- !ruby/object:Gem::Version
|
|
312
|
+
version: '0'
|
|
271
313
|
description: Upload files in your Ruby applications, map them to a range of ORMs,
|
|
272
314
|
store them on different backends.
|
|
273
315
|
email:
|
|
@@ -280,6 +322,8 @@ files:
|
|
|
280
322
|
- README.md
|
|
281
323
|
- lib/carrierwave.rb
|
|
282
324
|
- lib/carrierwave/compatibility/paperclip.rb
|
|
325
|
+
- lib/carrierwave/downloader/base.rb
|
|
326
|
+
- lib/carrierwave/downloader/remote_file.rb
|
|
283
327
|
- lib/carrierwave/error.rb
|
|
284
328
|
- lib/carrierwave/locale/en.yml
|
|
285
329
|
- lib/carrierwave/mount.rb
|
|
@@ -288,6 +332,7 @@ files:
|
|
|
288
332
|
- lib/carrierwave/processing.rb
|
|
289
333
|
- lib/carrierwave/processing/mini_magick.rb
|
|
290
334
|
- lib/carrierwave/processing/rmagick.rb
|
|
335
|
+
- lib/carrierwave/processing/vips.rb
|
|
291
336
|
- lib/carrierwave/sanitized_file.rb
|
|
292
337
|
- lib/carrierwave/storage.rb
|
|
293
338
|
- lib/carrierwave/storage/abstract.rb
|
|
@@ -298,12 +343,13 @@ files:
|
|
|
298
343
|
- lib/carrierwave/uploader/cache.rb
|
|
299
344
|
- lib/carrierwave/uploader/callbacks.rb
|
|
300
345
|
- lib/carrierwave/uploader/configuration.rb
|
|
301
|
-
- lib/carrierwave/uploader/
|
|
302
|
-
- lib/carrierwave/uploader/
|
|
346
|
+
- lib/carrierwave/uploader/content_type_allowlist.rb
|
|
347
|
+
- lib/carrierwave/uploader/content_type_denylist.rb
|
|
303
348
|
- lib/carrierwave/uploader/default_url.rb
|
|
349
|
+
- lib/carrierwave/uploader/dimension.rb
|
|
304
350
|
- lib/carrierwave/uploader/download.rb
|
|
305
|
-
- lib/carrierwave/uploader/
|
|
306
|
-
- lib/carrierwave/uploader/
|
|
351
|
+
- lib/carrierwave/uploader/extension_allowlist.rb
|
|
352
|
+
- lib/carrierwave/uploader/extension_denylist.rb
|
|
307
353
|
- lib/carrierwave/uploader/file_size.rb
|
|
308
354
|
- lib/carrierwave/uploader/mountable.rb
|
|
309
355
|
- lib/carrierwave/uploader/processing.rb
|
|
@@ -314,10 +360,11 @@ files:
|
|
|
314
360
|
- lib/carrierwave/uploader/url.rb
|
|
315
361
|
- lib/carrierwave/uploader/versions.rb
|
|
316
362
|
- lib/carrierwave/utilities.rb
|
|
363
|
+
- lib/carrierwave/utilities/file_name.rb
|
|
317
364
|
- lib/carrierwave/utilities/uri.rb
|
|
318
365
|
- lib/carrierwave/validations/active_model.rb
|
|
319
366
|
- lib/carrierwave/version.rb
|
|
320
|
-
- lib/generators/templates/uploader.rb
|
|
367
|
+
- lib/generators/templates/uploader.rb.erb
|
|
321
368
|
- lib/generators/uploader_generator.rb
|
|
322
369
|
homepage: https://github.com/carrierwaveuploader/carrierwave
|
|
323
370
|
licenses:
|
|
@@ -332,14 +379,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
332
379
|
requirements:
|
|
333
380
|
- - ">="
|
|
334
381
|
- !ruby/object:Gem::Version
|
|
335
|
-
version: 2.
|
|
382
|
+
version: 2.5.0
|
|
336
383
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
337
384
|
requirements:
|
|
338
385
|
- - ">="
|
|
339
386
|
- !ruby/object:Gem::Version
|
|
340
387
|
version: '0'
|
|
341
388
|
requirements: []
|
|
342
|
-
rubygems_version: 3.
|
|
389
|
+
rubygems_version: 3.5.22
|
|
343
390
|
signing_key:
|
|
344
391
|
specification_version: 4
|
|
345
392
|
summary: Ruby file upload library
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
module CarrierWave
|
|
2
|
-
module Uploader
|
|
3
|
-
module ContentTypeBlacklist
|
|
4
|
-
extend ActiveSupport::Concern
|
|
5
|
-
|
|
6
|
-
included do
|
|
7
|
-
before :cache, :check_content_type_blacklist!
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
##
|
|
11
|
-
# Override this method in your uploader to provide a blacklist of files content types
|
|
12
|
-
# which are not allowed to be uploaded.
|
|
13
|
-
# Not only strings but Regexp are allowed as well.
|
|
14
|
-
#
|
|
15
|
-
# === Returns
|
|
16
|
-
#
|
|
17
|
-
# [NilClass, String, Regexp, Array[String, Regexp]] a blacklist of content types which are not allowed to be uploaded
|
|
18
|
-
#
|
|
19
|
-
# === Examples
|
|
20
|
-
#
|
|
21
|
-
# def content_type_blacklist
|
|
22
|
-
# %w(text/json application/json)
|
|
23
|
-
# end
|
|
24
|
-
#
|
|
25
|
-
# Basically the same, but using a Regexp:
|
|
26
|
-
#
|
|
27
|
-
# def content_type_blacklist
|
|
28
|
-
# [/(text|application)\/json/]
|
|
29
|
-
# end
|
|
30
|
-
#
|
|
31
|
-
def content_type_blacklist; end
|
|
32
|
-
|
|
33
|
-
private
|
|
34
|
-
|
|
35
|
-
def check_content_type_blacklist!(new_file)
|
|
36
|
-
content_type = new_file.content_type
|
|
37
|
-
if content_type_blacklist && blacklisted_content_type?(content_type)
|
|
38
|
-
raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.content_type_blacklist_error", content_type: content_type)
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def blacklisted_content_type?(content_type)
|
|
43
|
-
Array(content_type_blacklist).any? { |item| content_type =~ /#{item}/ }
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
end # ContentTypeBlacklist
|
|
47
|
-
end # Uploader
|
|
48
|
-
end # CarrierWave
|