carrierwave-base64 2.7.0 → 2.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/.travis.yml +5 -4
- data/CHANGELOG.md +4 -0
- data/README.md +3 -2
- data/carrierwave-base64.gemspec +3 -1
- data/lib/carrierwave/base64.rb +1 -0
- data/lib/carrierwave/base64/adapter.rb +21 -31
- data/lib/carrierwave/base64/base64_string_io.rb +32 -5
- data/lib/carrierwave/base64/exceptions.rb +2 -0
- data/lib/carrierwave/base64/mounting_helper.rb +63 -0
- data/lib/carrierwave/base64/railtie.rb +2 -0
- data/lib/carrierwave/base64/version.rb +1 -1
- data/spec/adapter_spec.rb +25 -11
- data/spec/base64_string_io_spec.rb +7 -5
- data/spec/fixtures/base64_image.fixture +1 -1
- data/spec/fixtures/test.docx +0 -0
- data/spec/fixtures/test.jpeg +0 -0
- data/spec/fixtures/test.mp3 +0 -0
- data/spec/fixtures/test.pdf +0 -0
- data/spec/fixtures/{test.jpg → test.png} +0 -0
- data/spec/spec_helper.rb +12 -1
- metadata +44 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9da0e56ae6151c3068b895309bd70f9bfba959b28785b8fafde064bfecc9047
|
4
|
+
data.tar.gz: b723fcc95905b624fdc54394129bd9629b8bc1aa781061fc992f6f2ec3405d6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccb2e7e949025a1eb37ba1bea875219ea269b561f6783f44203ba3085f9e2455913f9e01eb540e54165d0f4e5cc371cae4009dc367a2a278d9f65b6d26c01dc0
|
7
|
+
data.tar.gz: a429b36e280b49ac842bcf26ccf73c096cce0a3a67129ee97a3c92fd391a38ffb3486220c947a9a243e8d7db7a4997b81cfad9b36d0e3c974ad451d6f1b71286
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
3
|
rvm:
|
4
|
-
- 2.1.10
|
5
4
|
- 2.2.10
|
6
|
-
- 2.3.
|
7
|
-
- 2.4.
|
8
|
-
- 2.5.
|
5
|
+
- 2.3.8
|
6
|
+
- 2.4.5
|
7
|
+
- 2.5.2
|
9
8
|
- ruby-head
|
9
|
+
- jruby-head
|
10
10
|
|
11
11
|
matrix:
|
12
12
|
allow_failures:
|
13
13
|
- rvm: ruby-head
|
14
|
+
- rvm: jruby-head
|
14
15
|
|
15
16
|
gemfile:
|
16
17
|
- Gemfile
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# carrierwave-base64 changelog
|
2
2
|
|
3
|
+
## 2.8.0
|
4
|
+
|
5
|
+
- Mime Type is now detected from file contents, falling back to the type, specified by the user. (#73, @justisb)
|
6
|
+
|
3
7
|
## 2.7.0
|
4
8
|
|
5
9
|
- Railtie is not required by default, so the gem can be used in non Rails app (@sleepingstu)
|
data/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# Carrierwave::Base64
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/carrierwave-base64.svg)](http://badge.fury.io/rb/carrierwave-base64)
|
4
|
-
[![Build Status](https://travis-ci.org/
|
5
|
-
[![Code Climate](https://codeclimate.com/github/
|
4
|
+
[![Build Status](https://travis-ci.org/y9v/carrierwave-base64.svg?branch=master)](https://travis-ci.org/y9v/carrierwave-base64)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/y9v/carrierwave-base64/badges/gpa.svg)](https://codeclimate.com/github/y9v/carrierwave-base64)
|
6
|
+
[![Inch CI](https://inch-ci.org/github/y9v/carrierwave-base64.svg?branch=master)](https://inch-ci.org/github/y9v/carrierwave-base64)
|
6
7
|
|
7
8
|
Upload files encoded as base64 to carrierwave.
|
8
9
|
|
data/carrierwave-base64.gemspec
CHANGED
@@ -21,15 +21,17 @@ Gem::Specification.new do |spec|
|
|
21
21
|
|
22
22
|
spec.add_dependency 'carrierwave', '>= 0.8.0'
|
23
23
|
spec.add_dependency 'mime-types', '~> 3.0'
|
24
|
+
spec.add_dependency 'mimemagic', '~> 0.3.2'
|
24
25
|
|
25
26
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
26
27
|
spec.add_development_dependency 'carrierwave-mongoid'
|
27
28
|
spec.add_development_dependency 'mongoid'
|
28
29
|
spec.add_development_dependency 'pry'
|
29
|
-
spec.add_development_dependency 'rails', '~>
|
30
|
+
spec.add_development_dependency 'rails', '~> 5'
|
30
31
|
spec.add_development_dependency 'rake', '~> 10.0'
|
31
32
|
spec.add_development_dependency 'rspec', '~> 2.14'
|
32
33
|
spec.add_development_dependency 'rubocop'
|
33
34
|
spec.add_development_dependency 'sham_rack'
|
34
35
|
spec.add_development_dependency 'sqlite3'
|
36
|
+
spec.add_development_dependency 'yard'
|
35
37
|
end
|
data/lib/carrierwave/base64.rb
CHANGED
@@ -2,6 +2,7 @@ require 'mime/types/full'
|
|
2
2
|
require 'carrierwave/base64/version'
|
3
3
|
require 'carrierwave/base64/exceptions'
|
4
4
|
require 'carrierwave/base64/base64_string_io'
|
5
|
+
require 'carrierwave/base64/mounting_helper'
|
5
6
|
require 'carrierwave/base64/adapter'
|
6
7
|
require 'carrierwave/base64/railtie' if defined?(Rails)
|
7
8
|
|
@@ -1,42 +1,32 @@
|
|
1
1
|
module Carrierwave
|
2
2
|
module Base64
|
3
|
+
# Module with .mount_base64_uploader method, that is mixed in to
|
4
|
+
# ActiveRecord::Base or Mongoid::Document::ClassMethods
|
3
5
|
module Adapter
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
6
|
+
# Mounts the carrierwave uploader that can accept a base64 encoded
|
7
|
+
# string as input. It also accepts regular file uploads.
|
8
|
+
#
|
9
|
+
# @param attribute [Symbol] the attribute to mount this uploader on
|
10
|
+
# @param uploader_class [Carrierwave::Uploader] the uploader class to
|
11
|
+
# mount
|
12
|
+
# @param options [Hash{Symbol => Object}] a set of options
|
13
|
+
# @option options [Proc] :file_name Proc that must return a file name
|
14
|
+
# without extension
|
15
|
+
#
|
16
|
+
# @example Mount the uploader and specify the file name
|
17
|
+
# mount_base64_uploader :image, ImageUploader,
|
18
|
+
# file_name: -> (u) { u.username }
|
19
|
+
#
|
20
|
+
# @return [Symbol] the defined writer method name
|
7
21
|
def mount_base64_uploader(attribute, uploader_class, options = {})
|
8
22
|
mount_uploader attribute, uploader_class, options
|
9
23
|
options[:file_name] ||= proc { attribute }
|
10
24
|
|
11
|
-
|
12
|
-
warn(
|
13
|
-
'[Deprecation warning] Setting `file_name` option to a string is '\
|
14
|
-
'deprecated and will be removed in 3.0.0. If you want to keep the '\
|
15
|
-
'existing behaviour, wrap the string in a Proc'
|
16
|
-
)
|
17
|
-
end
|
25
|
+
Carrierwave::Base64::MountingHelper.check_for_deprecations(options)
|
18
26
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
if respond_to?("#{attribute}_will_change!") && data.present?
|
23
|
-
send "#{attribute}_will_change!"
|
24
|
-
end
|
25
|
-
|
26
|
-
return super(data) unless data.is_a?(String) &&
|
27
|
-
data.strip.start_with?('data')
|
28
|
-
|
29
|
-
filename = if options[:file_name].respond_to?(:call)
|
30
|
-
options[:file_name].call(self)
|
31
|
-
else
|
32
|
-
options[:file_name]
|
33
|
-
end.to_s
|
34
|
-
|
35
|
-
super Carrierwave::Base64::Base64StringIO.new(data.strip, filename)
|
36
|
-
end
|
37
|
-
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
38
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
39
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
27
|
+
Carrierwave::Base64::MountingHelper.define_writer(
|
28
|
+
self, attribute, options
|
29
|
+
)
|
40
30
|
end
|
41
31
|
end
|
42
32
|
end
|
@@ -1,8 +1,28 @@
|
|
1
|
+
require 'mimemagic'
|
2
|
+
require 'mimemagic/overlay'
|
3
|
+
|
1
4
|
module Carrierwave
|
2
5
|
module Base64
|
6
|
+
# Class that decodes a base64 string, builds a StringIO for the
|
7
|
+
# decoded bytes, and extracts the file MIME type to build a file
|
8
|
+
# name with extension.
|
3
9
|
class Base64StringIO < StringIO
|
4
|
-
|
10
|
+
# @return [String] the file name without extension
|
11
|
+
attr_reader :file_name
|
12
|
+
|
13
|
+
# @return [String] the file extension for the uploaded file
|
14
|
+
attr_reader :file_extension
|
5
15
|
|
16
|
+
# Returns a StringIO with decoded bytes from the base64 encoded
|
17
|
+
# string and builds a file name with extension for the uploaded file,
|
18
|
+
# based on the MIME type specified in the base64 encoded string.
|
19
|
+
#
|
20
|
+
# @param encoded_file [String] the base64 encoded file contents
|
21
|
+
# @param file_name [String] the file name without extention
|
22
|
+
#
|
23
|
+
# @raise [ArgumentError] If the base64 encoded string is empty
|
24
|
+
#
|
25
|
+
# @return [StringIO] StringIO with decoded bytes
|
6
26
|
def initialize(encoded_file, file_name)
|
7
27
|
description, encoded_bytes = encoded_file.split(',')
|
8
28
|
|
@@ -10,21 +30,28 @@ module Carrierwave
|
|
10
30
|
raise ArgumentError if encoded_bytes.eql?('(null)')
|
11
31
|
|
12
32
|
@file_name = file_name
|
13
|
-
@file_extension = get_file_extension description
|
14
33
|
bytes = ::Base64.decode64 encoded_bytes
|
34
|
+
@file_extension = get_file_extension description, bytes
|
15
35
|
|
16
36
|
super bytes
|
17
37
|
end
|
18
38
|
|
39
|
+
# Returns a file name with extension, based on the MIME type specified
|
40
|
+
# in the base64 encoded string.
|
41
|
+
#
|
42
|
+
# @return [String] File name with extention
|
19
43
|
def original_filename
|
20
44
|
File.basename("#{@file_name}.#{@file_extension}")
|
21
45
|
end
|
22
46
|
|
23
47
|
private
|
24
48
|
|
25
|
-
|
26
|
-
|
27
|
-
|
49
|
+
# Determine content type from input, with provided type as fallback
|
50
|
+
def get_file_extension(description, bytes)
|
51
|
+
detected_type = MimeMagic.by_magic(bytes)
|
52
|
+
content_type = (detected_type && detected_type.type) ||
|
53
|
+
description.split(';base64').first
|
54
|
+
mime_type = MIME::Types[content_type].last
|
28
55
|
unless mime_type
|
29
56
|
raise Carrierwave::Base64::UnknownMimeTypeError,
|
30
57
|
"Unknown MIME type: #{content_type}"
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Carrierwave
|
2
|
+
module Base64
|
3
|
+
# Module with helper functions for mounting uploaders
|
4
|
+
module MountingHelper
|
5
|
+
module_function
|
6
|
+
|
7
|
+
# Checks for deprecations and prints a warning if found any.
|
8
|
+
# @private
|
9
|
+
#
|
10
|
+
# @param options [Hash{Symbol => Object}] the uploader options
|
11
|
+
# @return [void]
|
12
|
+
def check_for_deprecations(options)
|
13
|
+
return unless options[:file_name].is_a?(String)
|
14
|
+
|
15
|
+
warn(
|
16
|
+
'[Deprecation warning] Setting `file_name` option to a string is '\
|
17
|
+
'deprecated and will be removed in 3.0.0. If you want to keep the '\
|
18
|
+
'existing behaviour, wrap the string in a Proc'
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Returns a file name for the uploaded file.
|
23
|
+
# @private
|
24
|
+
#
|
25
|
+
# @param model_instance [Object] the model instance object
|
26
|
+
# @param options [Hash{Symbol => Object}] the uploader options
|
27
|
+
# @return [String] File name without extension
|
28
|
+
def file_name(model_instance, options)
|
29
|
+
if options[:file_name].respond_to?(:call)
|
30
|
+
options[:file_name].call(model_instance)
|
31
|
+
else
|
32
|
+
options[:file_name]
|
33
|
+
end.to_s
|
34
|
+
end
|
35
|
+
|
36
|
+
# Defines an attribute writer method on the class with mounted uploader.
|
37
|
+
# @private
|
38
|
+
#
|
39
|
+
# @param klass [Class] the class with mounted uploader
|
40
|
+
# @param attr [Symbol] the attribute for which the writer will be defined
|
41
|
+
# @param options [Hash{Symbol => Object}] a set of options
|
42
|
+
# @return [Symbol] the defined writer method name
|
43
|
+
def define_writer(klass, attr, options)
|
44
|
+
klass.send(:define_method, "#{attr}=") do |data|
|
45
|
+
# rubocop:disable Lint/NonLocalExitFromIterator
|
46
|
+
return if data.to_s.empty? || data == send(attr).to_s
|
47
|
+
|
48
|
+
# rubocop:enable Lint/NonLocalExitFromIterator
|
49
|
+
|
50
|
+
send("#{attr}_will_change!") if respond_to?("#{attr}_will_change!")
|
51
|
+
|
52
|
+
return super(data) unless data.is_a?(String) &&
|
53
|
+
data.strip.start_with?('data')
|
54
|
+
|
55
|
+
super Carrierwave::Base64::Base64StringIO.new(
|
56
|
+
data.strip,
|
57
|
+
Carrierwave::Base64::MountingHelper.file_name(self, options)
|
58
|
+
)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module Carrierwave
|
2
2
|
module Base64
|
3
|
+
# Railtie class to load the carrierwave-base64 adapters
|
4
|
+
# Loads adapters for ActiveRecord and Mongoid
|
3
5
|
class Railtie < Rails::Railtie
|
4
6
|
ActiveSupport.on_load :active_record do
|
5
7
|
ActiveRecord::Base.extend Carrierwave::Base64::Adapter
|
data/spec/adapter_spec.rb
CHANGED
@@ -30,11 +30,10 @@ RSpec.describe Carrierwave::Base64::Adapter do
|
|
30
30
|
|
31
31
|
it 'creates a file' do
|
32
32
|
subject.save!
|
33
|
-
subject.reload
|
34
33
|
|
35
34
|
expect(
|
36
35
|
subject.image.current_path
|
37
|
-
).to eq file_path('../uploads', 'image.
|
36
|
+
).to eq file_path('../uploads', 'image.png')
|
38
37
|
end
|
39
38
|
end
|
40
39
|
end
|
@@ -86,7 +85,6 @@ RSpec.describe Carrierwave::Base64::Adapter do
|
|
86
85
|
|
87
86
|
it 'saves the file' do
|
88
87
|
subject.save!
|
89
|
-
subject.reload
|
90
88
|
|
91
89
|
expect(
|
92
90
|
subject.image.current_path
|
@@ -103,11 +101,10 @@ RSpec.describe Carrierwave::Base64::Adapter do
|
|
103
101
|
|
104
102
|
it 'creates a file' do
|
105
103
|
subject.save!
|
106
|
-
subject.reload
|
107
104
|
|
108
105
|
expect(
|
109
106
|
subject.image.current_path
|
110
|
-
).to eq file_path('../uploads', 'batman.
|
107
|
+
).to eq file_path('../uploads', 'batman.png')
|
111
108
|
end
|
112
109
|
|
113
110
|
it 'sets will_change for the attribute' do
|
@@ -126,10 +123,9 @@ RSpec.describe Carrierwave::Base64::Adapter do
|
|
126
123
|
it 'should invoke the file_name proc upon each upload' do
|
127
124
|
subject.save!
|
128
125
|
another_subject.save!
|
129
|
-
another_subject.reload
|
130
126
|
expect(
|
131
127
|
another_subject.image.current_path
|
132
|
-
).to eq file_path('../uploads', 'robin.
|
128
|
+
).to eq file_path('../uploads', 'robin.png')
|
133
129
|
end
|
134
130
|
end
|
135
131
|
end
|
@@ -140,21 +136,39 @@ RSpec.describe Carrierwave::Base64::Adapter do
|
|
140
136
|
file_path('fixtures', 'base64_image.fixture')
|
141
137
|
).strip
|
142
138
|
subject.save!
|
143
|
-
subject.reload
|
144
139
|
end
|
145
140
|
|
146
141
|
it 'keeps the file when setting the attribute to existing value' do
|
147
|
-
expect(File.exist?(subject.
|
142
|
+
expect(File.exist?(subject.image.file.file)).to be_truthy
|
148
143
|
subject.update!(image: subject.image.to_s)
|
149
|
-
expect(File.exist?(subject.
|
144
|
+
expect(File.exist?(subject.image.file.file)).to be_truthy
|
150
145
|
end
|
151
146
|
|
152
147
|
it 'removes files when remove_* is set to true' do
|
153
148
|
subject.remove_image = true
|
154
149
|
subject.save!
|
155
|
-
expect(subject.
|
150
|
+
expect(subject.image.file).to be_nil
|
156
151
|
end
|
157
152
|
end
|
158
153
|
end
|
154
|
+
|
155
|
+
context 'models with presence validation on attribute with uploader' do
|
156
|
+
subject do
|
157
|
+
User.validates(:image, presence: true)
|
158
|
+
User.mount_base64_uploader(:image, uploader)
|
159
|
+
User.new
|
160
|
+
end
|
161
|
+
|
162
|
+
before(:each) do
|
163
|
+
subject.image = File.read(
|
164
|
+
file_path('fixtures', 'base64_image.fixture')
|
165
|
+
).strip
|
166
|
+
subject.save!
|
167
|
+
end
|
168
|
+
|
169
|
+
it 'gives no false positive on presence validation' do
|
170
|
+
expect { subject.update!(username: 'new-username') }.not_to raise_error
|
171
|
+
end
|
172
|
+
end
|
159
173
|
end
|
160
174
|
end
|
@@ -2,17 +2,19 @@ RSpec.describe Carrierwave::Base64::Base64StringIO do
|
|
2
2
|
%w[application/vnd.openxmlformats-officedocument.wordprocessingml.document
|
3
3
|
image/jpeg application/pdf audio/mpeg].each do |content_type|
|
4
4
|
context "correct #{content_type} data" do
|
5
|
-
let(:data) do
|
6
|
-
"data:#{content_type};base64,/9j/4AAQSkZJRgABAQEASABKdhH//2Q=="
|
7
|
-
end
|
8
|
-
|
9
5
|
let(:file_extension) do
|
10
6
|
MIME::Types[content_type].last.preferred_extension
|
11
7
|
end
|
12
8
|
|
9
|
+
let(:data) do
|
10
|
+
file_name = "test.#{file_extension}"
|
11
|
+
bytes = File.read(file_path('fixtures', file_name))
|
12
|
+
"data:#{content_type};base64,#{::Base64.encode64(bytes)}"
|
13
|
+
end
|
14
|
+
|
13
15
|
subject { described_class.new data, 'file' }
|
14
16
|
|
15
|
-
it 'determines the file format from the
|
17
|
+
it 'determines the file format from the content type' do
|
16
18
|
expect(subject.file_extension).to eql(file_extension)
|
17
19
|
end
|
18
20
|
|
@@ -1 +1 @@
|
|
1
|
-
data:image/
|
1
|
+
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
File without changes
|
data/spec/spec_helper.rb
CHANGED
@@ -14,7 +14,6 @@ require 'carrierwave/mongoid'
|
|
14
14
|
|
15
15
|
require 'carrierwave/base64'
|
16
16
|
|
17
|
-
ActiveRecord::Base.raise_in_transactional_callbacks = true
|
18
17
|
ActiveRecord::Base.establish_connection(
|
19
18
|
adapter: 'sqlite3',
|
20
19
|
database: ':memory:'
|
@@ -29,3 +28,15 @@ def file_path(*paths)
|
|
29
28
|
end
|
30
29
|
|
31
30
|
CarrierWave.root = ''
|
31
|
+
|
32
|
+
# Add preferred file types similar to how users would implement custom types
|
33
|
+
content_types = {
|
34
|
+
'audio/mpeg' => 'mp3'
|
35
|
+
}
|
36
|
+
content_types.each do |content_type, extension|
|
37
|
+
MIME::Types.add(
|
38
|
+
MIME::Type.new(content_type).tap do |type|
|
39
|
+
type.preferred_extension = extension
|
40
|
+
end
|
41
|
+
)
|
42
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carrierwave-base64
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yury Lebedev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: carrierwave
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mimemagic
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.3.2
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.3.2
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +114,14 @@ dependencies:
|
|
100
114
|
requirements:
|
101
115
|
- - "~>"
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
117
|
+
version: '5'
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
124
|
+
version: '5'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: rake
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,6 +192,20 @@ dependencies:
|
|
178
192
|
- - ">="
|
179
193
|
- !ruby/object:Gem::Version
|
180
194
|
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: yard
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
181
209
|
description: This gem can be useful, if you need to upload files to your API from
|
182
210
|
mobile devises.
|
183
211
|
email:
|
@@ -200,12 +228,17 @@ files:
|
|
200
228
|
- lib/carrierwave/base64/adapter.rb
|
201
229
|
- lib/carrierwave/base64/base64_string_io.rb
|
202
230
|
- lib/carrierwave/base64/exceptions.rb
|
231
|
+
- lib/carrierwave/base64/mounting_helper.rb
|
203
232
|
- lib/carrierwave/base64/railtie.rb
|
204
233
|
- lib/carrierwave/base64/version.rb
|
205
234
|
- spec/adapter_spec.rb
|
206
235
|
- spec/base64_string_io_spec.rb
|
207
236
|
- spec/fixtures/base64_image.fixture
|
208
|
-
- spec/fixtures/test.
|
237
|
+
- spec/fixtures/test.docx
|
238
|
+
- spec/fixtures/test.jpeg
|
239
|
+
- spec/fixtures/test.mp3
|
240
|
+
- spec/fixtures/test.pdf
|
241
|
+
- spec/fixtures/test.png
|
209
242
|
- spec/spec_helper.rb
|
210
243
|
- spec/support/custom_expectations/warn_expectation.rb
|
211
244
|
- spec/support/models.rb
|
@@ -230,7 +263,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
230
263
|
version: '0'
|
231
264
|
requirements: []
|
232
265
|
rubyforge_project:
|
233
|
-
rubygems_version: 2.7.
|
266
|
+
rubygems_version: 2.7.6
|
234
267
|
signing_key:
|
235
268
|
specification_version: 4
|
236
269
|
summary: Upload images encoded as base64 to carrierwave.
|
@@ -238,7 +271,11 @@ test_files:
|
|
238
271
|
- spec/adapter_spec.rb
|
239
272
|
- spec/base64_string_io_spec.rb
|
240
273
|
- spec/fixtures/base64_image.fixture
|
241
|
-
- spec/fixtures/test.
|
274
|
+
- spec/fixtures/test.docx
|
275
|
+
- spec/fixtures/test.jpeg
|
276
|
+
- spec/fixtures/test.mp3
|
277
|
+
- spec/fixtures/test.pdf
|
278
|
+
- spec/fixtures/test.png
|
242
279
|
- spec/spec_helper.rb
|
243
280
|
- spec/support/custom_expectations/warn_expectation.rb
|
244
281
|
- spec/support/models.rb
|