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.
- 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 +91 -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 +43 -20
- data/lib/carrierwave/uploader/content_type_allowlist.rb +62 -0
- data/lib/carrierwave/uploader/content_type_denylist.rb +65 -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} +13 -4
- data/lib/generators/uploader_generator.rb +3 -3
- metadata +115 -44
- 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,23 @@ 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
|
|
|
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"
|
|
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(
|
|
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.
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
39
|
+
version: 6.0.0
|
|
41
40
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
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.
|
|
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.
|
|
56
|
+
version: '1.1'
|
|
57
|
+
- - "<"
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: '3'
|
|
55
60
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
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:
|
|
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: '
|
|
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:
|
|
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:
|
|
109
|
+
name: csv
|
|
77
110
|
requirement: !ruby/object:Gem::Requirement
|
|
78
111
|
requirements:
|
|
79
|
-
- - "
|
|
112
|
+
- - "~>"
|
|
80
113
|
- !ruby/object:Gem::Version
|
|
81
|
-
version:
|
|
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:
|
|
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: '
|
|
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: '
|
|
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:
|
|
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:
|
|
165
|
+
name: rubocop
|
|
133
166
|
requirement: !ruby/object:Gem::Requirement
|
|
134
167
|
requirements:
|
|
135
168
|
- - "~>"
|
|
136
169
|
- !ruby/object:Gem::Version
|
|
137
|
-
version:
|
|
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:
|
|
177
|
+
version: '1.28'
|
|
145
178
|
- !ruby/object:Gem::Dependency
|
|
146
|
-
name:
|
|
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-
|
|
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:
|
|
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:
|
|
255
|
+
name: ruby-vips
|
|
203
256
|
requirement: !ruby/object:Gem::Requirement
|
|
204
257
|
requirements:
|
|
205
258
|
- - ">="
|
|
206
259
|
- !ruby/object:Gem::Version
|
|
207
|
-
version:
|
|
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:
|
|
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/
|
|
302
|
-
- lib/carrierwave/uploader/
|
|
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/
|
|
306
|
-
- lib/carrierwave/uploader/
|
|
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
|
-
|
|
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.
|
|
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:
|
|
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: []
|