carrierwave 0.11.2 → 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.
Files changed (69) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +495 -173
  3. data/lib/carrierwave/compatibility/paperclip.rb +4 -4
  4. data/lib/carrierwave/downloader/base.rb +101 -0
  5. data/lib/carrierwave/downloader/remote_file.rb +68 -0
  6. data/lib/carrierwave/error.rb +1 -0
  7. data/lib/carrierwave/locale/en.yml +11 -5
  8. data/lib/carrierwave/mount.rb +217 -182
  9. data/lib/carrierwave/mounter.rb +257 -0
  10. data/lib/carrierwave/orm/activerecord.rb +29 -35
  11. data/lib/carrierwave/processing/mini_magick.rb +169 -84
  12. data/lib/carrierwave/processing/rmagick.rb +107 -25
  13. data/lib/carrierwave/processing/vips.rb +315 -0
  14. data/lib/carrierwave/processing.rb +1 -1
  15. data/lib/carrierwave/sanitized_file.rb +105 -87
  16. data/lib/carrierwave/storage/abstract.rb +16 -3
  17. data/lib/carrierwave/storage/file.rb +71 -3
  18. data/lib/carrierwave/storage/fog.rb +228 -57
  19. data/lib/carrierwave/storage.rb +1 -9
  20. data/lib/carrierwave/test/matchers.rb +88 -19
  21. data/lib/carrierwave/uploader/cache.rb +75 -45
  22. data/lib/carrierwave/uploader/callbacks.rb +1 -3
  23. data/lib/carrierwave/uploader/configuration.rb +84 -16
  24. data/lib/carrierwave/uploader/content_type_allowlist.rb +62 -0
  25. data/lib/carrierwave/uploader/content_type_denylist.rb +62 -0
  26. data/lib/carrierwave/uploader/default_url.rb +3 -5
  27. data/lib/carrierwave/uploader/dimension.rb +66 -0
  28. data/lib/carrierwave/uploader/download.rb +4 -74
  29. data/lib/carrierwave/uploader/extension_allowlist.rb +63 -0
  30. data/lib/carrierwave/uploader/extension_denylist.rb +64 -0
  31. data/lib/carrierwave/uploader/file_size.rb +43 -0
  32. data/lib/carrierwave/uploader/mountable.rb +13 -8
  33. data/lib/carrierwave/uploader/processing.rb +51 -13
  34. data/lib/carrierwave/uploader/proxy.rb +20 -9
  35. data/lib/carrierwave/uploader/remove.rb +0 -2
  36. data/lib/carrierwave/uploader/serialization.rb +2 -4
  37. data/lib/carrierwave/uploader/store.rb +85 -28
  38. data/lib/carrierwave/uploader/url.rb +8 -7
  39. data/lib/carrierwave/uploader/versions.rb +175 -125
  40. data/lib/carrierwave/uploader.rb +12 -10
  41. data/lib/carrierwave/utilities/file_name.rb +47 -0
  42. data/lib/carrierwave/utilities/uri.rb +14 -12
  43. data/lib/carrierwave/utilities.rb +1 -3
  44. data/lib/carrierwave/validations/active_model.rb +7 -11
  45. data/lib/carrierwave/version.rb +1 -1
  46. data/lib/carrierwave.rb +48 -21
  47. data/lib/generators/templates/{uploader.rb → uploader.rb.erb} +8 -11
  48. data/lib/generators/uploader_generator.rb +3 -3
  49. metadata +124 -86
  50. data/lib/carrierwave/locale/cs.yml +0 -11
  51. data/lib/carrierwave/locale/de.yml +0 -11
  52. data/lib/carrierwave/locale/el.yml +0 -11
  53. data/lib/carrierwave/locale/es.yml +0 -11
  54. data/lib/carrierwave/locale/fr.yml +0 -11
  55. data/lib/carrierwave/locale/ja.yml +0 -11
  56. data/lib/carrierwave/locale/nb.yml +0 -11
  57. data/lib/carrierwave/locale/nl.yml +0 -11
  58. data/lib/carrierwave/locale/pl.yml +0 -11
  59. data/lib/carrierwave/locale/pt-BR.yml +0 -11
  60. data/lib/carrierwave/locale/pt-PT.yml +0 -11
  61. data/lib/carrierwave/locale/ru.yml +0 -11
  62. data/lib/carrierwave/locale/sk.yml +0 -11
  63. data/lib/carrierwave/locale/tr.yml +0 -11
  64. data/lib/carrierwave/processing/mime_types.rb +0 -74
  65. data/lib/carrierwave/uploader/content_type_blacklist.rb +0 -48
  66. data/lib/carrierwave/uploader/content_type_whitelist.rb +0 -48
  67. data/lib/carrierwave/uploader/extension_blacklist.rb +0 -47
  68. data/lib/carrierwave/uploader/extension_whitelist.rb +0 -49
  69. data/lib/carrierwave/utilities/deprecation.rb +0 -18
@@ -1,11 +0,0 @@
1
- fr:
2
- errors:
3
- messages:
4
- carrierwave_processing_error: "Impossible de redimensionner l'image."
5
- carrierwave_integrity_error: "Ce n'est pas une image."
6
- carrierwave_download_error: "Impossible de télécharger l'image."
7
- extension_white_list_error: "Vous n'êtes pas autorisé à uploader des fichiers %{extension}, types autorisés: %{allowed_types}"
8
- extension_black_list_error: "Vous n'êtes pas autorisé à uploader des fichiers %{extension}, types interdits: %{prohibited_types}"
9
- rmagick_processing_error: "La manipulation d'image avec rmagick a échoué. Peut-être que ce n'est pas une image ? Erreur originale: %{e}"
10
- mime_types_processing_error: "Le traitement de fichier avec MIME::Types a échoué. Peut-être que ce n'est pas un type valide ? Erreur originale: %{e}"
11
- mini_magick_processing_error: "La manipulation d'image avec MiniMagick a échoué. Peut-être que ce n'est pas une image ? Erreur originale: %{e}"
@@ -1,11 +0,0 @@
1
- ja:
2
- errors:
3
- messages:
4
- carrierwave_processing_error: 処理できませんでした
5
- carrierwave_integrity_error: は許可されていないファイルタイプです
6
- carrierwave_download_error: はダウンロードできません
7
- extension_white_list_error: "%{extension}ファイルのアップロードは許可されていません。アップロードできるファイルタイプ: %{allowed_types}"
8
- extension_black_list_error: "%{extension}ファイルのアップロードは許可されていません。アップロードできないファイルタイプ: %{prohibited_types}"
9
- rmagick_processing_error: "rmagickがファイルを処理できませんでした。画像を確認してください。エラーメッセージ: %{e}"
10
- mime_types_processing_error: "MIME::Typesのファイルを処理できませんでした。Content-Typeを確認してください。エラーメッセージ: %{e}"
11
- mini_magick_processing_error: "MiniMagickがファイルを処理できませんでした。画像を確認してください。エラーメッセージ: %{e}"
@@ -1,11 +0,0 @@
1
- nb:
2
- errors:
3
- messages:
4
- carrierwave_processing_error: kunne ikke behandles
5
- carrierwave_integrity_error: er ikke en tillatt filtype
6
- carrierwave_download_error: kunne ikke lastes ned
7
- extension_white_list_error: "Du kan ikke laste opp %{extension}-filer, tillatte filtyper: %{allowed_types}"
8
- extension_black_list_error: "Du kan ikke laste opp %{extension}-filer, forbudte filtyper: %{prohibited_types}"
9
- rmagick_processing_error: "Kunne ikke manipulere med rmagick. Er du sikker på at det er et bilde? Feilmelding: %{e}"
10
- mime_types_processing_error: "Kunne ikke behandle fil med MIME::Types. Er du sikker på at content-type er korrekt? Feilmelding: %{e}"
11
- mini_magick_processing_error: "Kunne ikke manipulere med MiniMagick. Er du sikker på at det er et bilde? Feilmelding: %{e}"
@@ -1,11 +0,0 @@
1
- nl:
2
- errors:
3
- messages:
4
- carrierwave_processing_error: kon niet worden verwerkt
5
- carrierwave_integrity_error: is niet van een toegestaan bestandstype
6
- carrierwave_download_error: kon niet gedownload worden
7
- extension_white_list_error: "Het is niet toegestaan om %{extension} bestanden te uploaden; toegestane bestandstypes: %{allowed_types}"
8
- extension_black_list_error: "Het is niet toegestaan om %{extension} bestanden te uploaden; verboden bestandstypes: %{prohibited_types}"
9
- rmagick_processing_error: "Bewerking met rmagick is mislukt, misschien is het geen afbeelding? Originele foutmelding: %{e}"
10
- mime_types_processing_error: "Verwerking van bestand met MIME::Types is mislukt, misschien is het geen geldig content-type? Originele foutmelding: %{e}"
11
- mini_magick_processing_error: "Bewerking met MiniMagick is mislukt, misschien is het geen afbeelding? Originele foutmelding: %{e}"
@@ -1,11 +0,0 @@
1
- pl:
2
- errors:
3
- messages:
4
- carrierwave_processing_error: nie można przetworzyć
5
- carrierwave_integrity_error: niedozwolony typ pliku
6
- carrierwave_download_error: nie można pobrać pliku
7
- extension_white_list_error: "Nie można wgrać pliku o rozszerzeniu %{extension}, dozwolone typy plików: %{allowed_types}"
8
- extension_black_list_error: "Nie można wgrać pliku o rozszerzeniu %{extension}, zakazane typy plików: %{prohibited_types}"
9
- rmagick_processing_error: "Nie udało się przetworzyć pliku przy pomocy rmagick, może to nie jest obrazek? Oryginalna treść błędu: %{e}"
10
- mime_types_processing_error: "Nie udało się przetworzyć pliku przy pomocy MIME::Types, może content-type jest niepoprawny? Oryginalna treść błędu: %{e}"
11
- mini_magick_processing_error: "Nie udało się przetworzyć pliku przy pomocy MiniMagick, może to nie jest obrazek? Oryginalna treść błędu: %{e}"
@@ -1,11 +0,0 @@
1
- pt-BR:
2
- errors:
3
- messages:
4
- carrierwave_processing_error: falhou em ser processado
5
- carrierwave_integrity_error: não é um tipo de arquivo permitido
6
- carrierwave_download_error: não pôde ser baixado
7
- extension_white_list_error: "Não é permitido o envio de arquivos %{extension}, tipos permitidos: %{allowed_types}"
8
- extension_black_list_error: "Não é permitido o envio de arquivos %{extension}, tipos proibidos: %{prohibited_types}"
9
- rmagick_processing_error: "Falha ao manipular com RMagick, talvez arquivo não seja uma imagem? Erro original: %{e}"
10
- mime_types_processing_error: "Falha ao processar arquivo com MIME::Types, talvez content-type seja inválido? Erro original: %{e}"
11
- mini_magick_processing_error: "Falha ao manipular com MiniMagick, talvez arquivo não seja uma imagem? Erro original: %{e}"
@@ -1,11 +0,0 @@
1
- pt-PT:
2
- errors:
3
- messages:
4
- carrierwave_processing_error: falhou ao ser processado
5
- carrierwave_integrity_error: não é um tipo de ficheiro permitido
6
- carrierwave_download_error: não pôde ser transferido
7
- extension_white_list_error: "Não é permitido o envio de ficheiros com a extensão %{extension}, tipos de ficheiro permitidos: %{allowed_types}"
8
- extension_black_list_error: "Não é permitido o envio de ficheiros com a extensão %{extension}, tipos de ficheiro proibidos: %{prohibited_types}"
9
- rmagick_processing_error: "Ocorreu uma falha ao processar com rmagick, talvez o ficheiro não seja uma imagem? Erro original: %{e}"
10
- mime_types_processing_error: "Ocorreu uma falha ao processar com MIME::Types, talvez o parâmetro content-type não seja válido? Erro original: %{e}"
11
- mini_magick_processing_error: "Ocorreu uma falha ao processar com MiniMagick, talvez o ficheiro não seja uma imagem? Erro original: %{e}"
@@ -1,11 +0,0 @@
1
- ru:
2
- errors:
3
- messages:
4
- carrierwave_processing_error: Невозможно обработать изображение
5
- carrierwave_integrity_error: Файл не является изображением
6
- carrierwave_download_error: Невозможно скачать файл
7
- extension_white_list_error: "Вы не можете загружать файлы типа %{extension}, разрешенные типы: %{allowed_types}"
8
- extension_black_list_error: "Вы не можете загружать файлы типа %{extension}, запрещенные типы: %{prohibited_types}"
9
- rmagick_processing_error: "Ошибка взаимодействия с RMagick, может быть это не изображение? Исходная ошибка: %{e}"
10
- mime_types_processing_error: "Не получилось обработать файл с MIME::Types, возможно неправильный content-type? Исходная ошибка: %{e}"
11
- mini_magick_processing_error: "Ошибка взаимодействия с MiniMagick, может быть это не изображение? Исходная ошибка: %{e}"
@@ -1,11 +0,0 @@
1
- sk:
2
- errors:
3
- messages:
4
- carrierwave_processing_error: sa nepodarilo spracovať
5
- carrierwave_integrity_error: nie je povolený typ súboru
6
- carrierwave_download_error: nie je možné stiahnuť
7
- extension_white_list_error: "Nie je možné nahrávať %{extension} súbory, povolené typy: %{allowed_types}"
8
- extension_black_list_error: "Nie je možné nahrávať %{extension} súbory, zakázané typy: %{prohibited_types}"
9
- rmagick_processing_error: "Nepodarilo sa upraviť pomocou rmagick, možno nejde o obrázok? Hlásená chyba: %{e}"
10
- mime_types_processing_error: "Súbor sa nepodarilo spracovať pomocou MIME::Types, možno nejde o valídny content-type? Hlásená chyba: %{e}"
11
- mini_magick_processing_error: "Nepodarilo sa upraviť pomocou MiniMagick, možno nejde o obrázok? Hlásená chyba: %{e}"
@@ -1,11 +0,0 @@
1
- tr:
2
- errors:
3
- messages:
4
- carrierwave_processing_error: işlenmesi sırasında hata oluştu
5
- carrierwave_integrity_error: izin verilebilir bir dosya türü değil
6
- carrierwave_download_error: indirilemedi
7
- extension_white_list_error: "%{extension} uzantılı dosyaları yükleme izniniz yok, izin verilen uzantılar: %{allowed_types}"
8
- extension_black_list_error: "%{extension} uzantılı dosyaları yükleme izniniz yok, izin verilmeyen uzantılar: %{prohibited_types}"
9
- rmagick_processing_error: "Resim rmagick ile düzenlenemedi, belkide resim değildir? Orjinal Hata: %{e}"
10
- mime_types_processing_error: "Dosya, MIME::Types kullanılarak işlenemedi, belkide geçerli bir içerik türü değildir? Orjinal Hata: %{e}"
11
- mini_magick_processing_error: "Resim MiniMagick ile düzenlenemedi, belkide resim değildir? Orjinal Hata: %{e}"
@@ -1,74 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module CarrierWave
4
-
5
- ##
6
- # This module simplifies the use of the mime-types gem to intelligently
7
- # guess and set the content-type of a file. If you want to use this, you'll
8
- # need to require this file:
9
- #
10
- # require 'carrierwave/processing/mime_types'
11
- #
12
- # And then include it in your uploader:
13
- #
14
- # class MyUploader < CarrierWave::Uploader::Base
15
- # include CarrierWave::MimeTypes
16
- # end
17
- #
18
- # You can now use the provided helper:
19
- #
20
- # class MyUploader < CarrierWave::Uploader::Base
21
- # include CarrierWave::MimeTypes
22
- #
23
- # process :set_content_type
24
- # end
25
- #
26
- module MimeTypes
27
- extend ActiveSupport::Concern
28
-
29
- included do
30
- CarrierWave::Utilities::Deprecation.new "0.11.0", "CarrierWave::MimeTypes is deprecated and will be removed in the future, get the content_type from the SanitizedFile object directly."
31
- begin
32
- require "mime/types"
33
- rescue LoadError => e
34
- e.message << " (You may need to install the mime-types gem)"
35
- raise e
36
- end
37
- end
38
-
39
- module ClassMethods
40
- def set_content_type(override=false)
41
- process :set_content_type => override
42
- end
43
- end
44
-
45
- GENERIC_CONTENT_TYPES = %w[application/octet-stream binary/octet-stream]
46
-
47
- def generic_content_type?
48
- GENERIC_CONTENT_TYPES.include? file.content_type
49
- end
50
-
51
- ##
52
- # Changes the file content_type using the mime-types gem
53
- #
54
- # === Parameters
55
- #
56
- # [override (Boolean)] whether or not to override the file's content_type
57
- # if it is already set and not a generic content-type,
58
- # false by default
59
- #
60
- def set_content_type(override=false)
61
- if override || file.content_type.blank? || generic_content_type?
62
- new_content_type = ::MIME::Types.type_for(file.original_filename).first.to_s
63
- if file.respond_to?(:content_type=)
64
- file.content_type = new_content_type
65
- else
66
- file.instance_variable_set(:@content_type, new_content_type)
67
- end
68
- end
69
- rescue ::MIME::InvalidContentType => e
70
- raise CarrierWave::ProcessingError, I18n.translate(:"errors.messages.mime_types_processing_error", :e => e)
71
- end
72
-
73
- end # MimeTypes
74
- end # CarrierWave
@@ -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
@@ -1,48 +0,0 @@
1
- module CarrierWave
2
- module Uploader
3
- module ContentTypeWhitelist
4
- extend ActiveSupport::Concern
5
-
6
- included do
7
- before :cache, :check_content_type_whitelist!
8
- end
9
-
10
- ##
11
- # Override this method in your uploader to provide a whitelist of files content types
12
- # which are 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 whitelist of content types which are allowed to be uploaded
18
- #
19
- # === Examples
20
- #
21
- # def content_type_whitelist
22
- # %w(text/json application/json)
23
- # end
24
- #
25
- # Basically the same, but using a Regexp:
26
- #
27
- # def content_type_whitelist
28
- # [/(text|application)\/json/]
29
- # end
30
- #
31
- def content_type_whitelist; end
32
-
33
- private
34
-
35
- def check_content_type_whitelist!(new_file)
36
- content_type = new_file.content_type
37
- if content_type_whitelist && !whitelisted_content_type?(content_type)
38
- raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.content_type_whitelist_error", content_type: content_type)
39
- end
40
- end
41
-
42
- def whitelisted_content_type?(content_type)
43
- Array(content_type_whitelist).any? { |item| content_type =~ /#{item}/ }
44
- end
45
-
46
- end # ContentTypeWhitelist
47
- end # Uploader
48
- end # CarrierWave
@@ -1,47 +0,0 @@
1
- module CarrierWave
2
- module Uploader
3
- module ExtensionBlacklist
4
- extend ActiveSupport::Concern
5
-
6
- included do
7
- before :cache, :check_blacklist!
8
- end
9
-
10
- ##
11
- # Override this method in your uploader to provide a black list of extensions which
12
- # are prohibited to be uploaded. Compares the file's extension case insensitive.
13
- # Furthermore, not only strings but Regexp are allowed as well.
14
- #
15
- # When using a Regexp in the black list, `\A` and `\z` are automatically added to
16
- # the Regexp expression, also case insensitive.
17
- #
18
- # === Returns
19
-
20
- # [NilClass, Array[String,Regexp]] a black list of extensions which are prohibited to be uploaded
21
- #
22
- # === Examples
23
- #
24
- # def extension_black_list
25
- # %w(swf tiff)
26
- # end
27
- #
28
- # Basically the same, but using a Regexp:
29
- #
30
- # def extension_black_list
31
- # [/swf/, 'tiff']
32
- # end
33
- #
34
-
35
- def extension_black_list; end
36
-
37
- private
38
-
39
- def check_blacklist!(new_file)
40
- extension = new_file.extension.to_s
41
- if extension_black_list and extension_black_list.detect { |item| extension =~ /\A#{item}\z/i }
42
- raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.extension_black_list_error", :extension => new_file.extension.inspect, :prohibited_types => extension_black_list.join(", "))
43
- end
44
- end
45
- end
46
- end
47
- end
@@ -1,49 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module CarrierWave
4
- module Uploader
5
- module ExtensionWhitelist
6
- extend ActiveSupport::Concern
7
-
8
- included do
9
- before :cache, :check_whitelist!
10
- end
11
-
12
- ##
13
- # Override this method in your uploader to provide a white list of extensions which
14
- # are allowed to be uploaded. Compares the file's extension case insensitive.
15
- # Furthermore, not only strings but Regexp are allowed as well.
16
- #
17
- # When using a Regexp in the white list, `\A` and `\z` are automatically added to
18
- # the Regexp expression, also case insensitive.
19
- #
20
- # === Returns
21
- #
22
- # [NilClass, Array[String,Regexp]] a white list of extensions which are allowed to be uploaded
23
- #
24
- # === Examples
25
- #
26
- # def extension_white_list
27
- # %w(jpg jpeg gif png)
28
- # end
29
- #
30
- # Basically the same, but using a Regexp:
31
- #
32
- # def extension_white_list
33
- # [/jpe?g/, 'gif', 'png']
34
- # end
35
- #
36
- def extension_white_list; end
37
-
38
- private
39
-
40
- def check_whitelist!(new_file)
41
- extension = new_file.extension.to_s
42
- if extension_white_list and not extension_white_list.detect { |item| extension =~ /\A#{item}\z/i }
43
- raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.extension_white_list_error", :extension => new_file.extension.inspect, :allowed_types => extension_white_list.join(", "))
44
- end
45
- end
46
-
47
- end # ExtensionWhitelist
48
- end # Uploader
49
- end # CarrierWave
@@ -1,18 +0,0 @@
1
- # encoding: utf-8
2
- require 'active_support/deprecation'
3
-
4
- module CarrierWave
5
- module Utilities
6
- module Deprecation
7
-
8
- def self.new version = '0.11.0', message = 'Carrierwave'
9
- if ActiveSupport::VERSION::MAJOR < 4
10
- ActiveSupport::Deprecation.warn("#{message} (will be removed from version #{version})")
11
- else
12
- ActiveSupport::Deprecation.new(version, message)
13
- end
14
- end
15
-
16
- end # Deprecation
17
- end # Utilities
18
- end # CarrierWave