plowdawg-carrierwave 0.5.8
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.
- data/README.md +674 -0
- data/lib/carrierwave.rb +109 -0
- data/lib/carrierwave/compatibility/paperclip.rb +95 -0
- data/lib/carrierwave/locale/en.yml +5 -0
- data/lib/carrierwave/mount.rb +382 -0
- data/lib/carrierwave/orm/activerecord.rb +46 -0
- data/lib/carrierwave/processing/mime_types.rb +58 -0
- data/lib/carrierwave/processing/mini_magick.rb +253 -0
- data/lib/carrierwave/processing/rmagick.rb +279 -0
- data/lib/carrierwave/sanitized_file.rb +302 -0
- data/lib/carrierwave/storage/abstract.rb +30 -0
- data/lib/carrierwave/storage/cloud_files.rb +188 -0
- data/lib/carrierwave/storage/file.rb +47 -0
- data/lib/carrierwave/storage/fog.rb +332 -0
- data/lib/carrierwave/storage/right_s3.rb +1 -0
- data/lib/carrierwave/storage/s3.rb +240 -0
- data/lib/carrierwave/test/matchers.rb +164 -0
- data/lib/carrierwave/uploader.rb +44 -0
- data/lib/carrierwave/uploader/cache.rb +160 -0
- data/lib/carrierwave/uploader/callbacks.rb +35 -0
- data/lib/carrierwave/uploader/configuration.rb +162 -0
- data/lib/carrierwave/uploader/default_url.rb +19 -0
- data/lib/carrierwave/uploader/download.rb +75 -0
- data/lib/carrierwave/uploader/extension_whitelist.rb +49 -0
- data/lib/carrierwave/uploader/mountable.rb +39 -0
- data/lib/carrierwave/uploader/processing.rb +90 -0
- data/lib/carrierwave/uploader/proxy.rb +77 -0
- data/lib/carrierwave/uploader/remove.rb +23 -0
- data/lib/carrierwave/uploader/store.rb +113 -0
- data/lib/carrierwave/uploader/url.rb +45 -0
- data/lib/carrierwave/uploader/versions.rb +237 -0
- data/lib/carrierwave/validations/active_model.rb +79 -0
- data/lib/carrierwave/version.rb +3 -0
- data/lib/generators/templates/uploader.rb +49 -0
- data/lib/generators/uploader_generator.rb +7 -0
- metadata +215 -0
@@ -0,0 +1,45 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module CarrierWave
|
4
|
+
module Uploader
|
5
|
+
module Url
|
6
|
+
|
7
|
+
##
|
8
|
+
# === Returns
|
9
|
+
#
|
10
|
+
# [String] the location where this file is accessible via a url
|
11
|
+
#
|
12
|
+
def url
|
13
|
+
if file.respond_to?(:url) and not file.url.blank?
|
14
|
+
file.url
|
15
|
+
elsif current_path
|
16
|
+
File.expand_path(current_path).gsub(File.expand_path(root), '')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
alias_method :to_s, :url
|
21
|
+
|
22
|
+
##
|
23
|
+
# === Returns
|
24
|
+
#
|
25
|
+
# [Hash] the locations where this file and versions are accessible via a url
|
26
|
+
#
|
27
|
+
def as_json(options = nil)
|
28
|
+
h = { :url => url }
|
29
|
+
h.merge Hash[versions.map { |name, version| [name, { :url => version.url }] }]
|
30
|
+
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# FIXME to_xml should work like to_json, but this is the best we've been able to do so far.
|
34
|
+
# This hack fixes issue #337.
|
35
|
+
#
|
36
|
+
# === Returns
|
37
|
+
#
|
38
|
+
# [nil]
|
39
|
+
#
|
40
|
+
def to_xml(options = nil)
|
41
|
+
end
|
42
|
+
|
43
|
+
end # Url
|
44
|
+
end # Uploader
|
45
|
+
end # CarrierWave
|
@@ -0,0 +1,237 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'active_support/deprecation'
|
4
|
+
|
5
|
+
module CarrierWave
|
6
|
+
module Uploader
|
7
|
+
module Versions
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
|
10
|
+
include CarrierWave::Uploader::Callbacks
|
11
|
+
|
12
|
+
included do
|
13
|
+
##
|
14
|
+
# Add configuration options for versions
|
15
|
+
# class_inheritable_accessor was deprecated in Rails 3.1 and removed for 3.2.
|
16
|
+
# class_attribute was added in 3.0, but doesn't support omitting the instance_reader until 3.0.10
|
17
|
+
# For max compatibility, always use class_inheritable_accessor when possible
|
18
|
+
if respond_to?(:class_inheritable_accessor)
|
19
|
+
ActiveSupport::Deprecation.silence do
|
20
|
+
class_inheritable_accessor :versions, :version_names, :instance_reader => false, :instance_writer => false
|
21
|
+
end
|
22
|
+
else
|
23
|
+
class_attribute :versions, :version_names, :instance_reader => false, :instance_writer => false
|
24
|
+
end
|
25
|
+
|
26
|
+
self.versions = {}
|
27
|
+
self.version_names = []
|
28
|
+
|
29
|
+
attr_accessor :parent_cache_id
|
30
|
+
|
31
|
+
after :cache, :assign_parent_cache_id
|
32
|
+
after :cache, :cache_versions!
|
33
|
+
after :store, :store_versions!
|
34
|
+
after :remove, :remove_versions!
|
35
|
+
after :retrieve_from_cache, :retrieve_versions_from_cache!
|
36
|
+
after :retrieve_from_store, :retrieve_versions_from_store!
|
37
|
+
end
|
38
|
+
|
39
|
+
module ClassMethods
|
40
|
+
|
41
|
+
##
|
42
|
+
# Adds a new version to this uploader
|
43
|
+
#
|
44
|
+
# === Parameters
|
45
|
+
#
|
46
|
+
# [name (#to_sym)] name of the version
|
47
|
+
# [options (Hash)] optional options hash
|
48
|
+
# [&block (Proc)] a block to eval on this version of the uploader
|
49
|
+
#
|
50
|
+
# === Examples
|
51
|
+
#
|
52
|
+
# class MyUploader < CarrierWave::Uploader::Base
|
53
|
+
#
|
54
|
+
# version :thumb do
|
55
|
+
# process :scale => [200, 200]
|
56
|
+
# end
|
57
|
+
#
|
58
|
+
# version :preview, :if => :image? do
|
59
|
+
# process :scale => [200, 200]
|
60
|
+
# end
|
61
|
+
#
|
62
|
+
# end
|
63
|
+
#
|
64
|
+
def version(name, options = {}, &block)
|
65
|
+
name = name.to_sym
|
66
|
+
unless versions[name]
|
67
|
+
uploader = Class.new(self)
|
68
|
+
uploader.versions = {}
|
69
|
+
|
70
|
+
# Define the enable_processing method for versions so they get the
|
71
|
+
# value from the parent class unless explicitly overwritten
|
72
|
+
uploader.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
73
|
+
def self.enable_processing(value=nil)
|
74
|
+
self.enable_processing = value if value
|
75
|
+
if !@enable_processing.nil?
|
76
|
+
@enable_processing
|
77
|
+
else
|
78
|
+
superclass.enable_processing
|
79
|
+
end
|
80
|
+
end
|
81
|
+
RUBY
|
82
|
+
|
83
|
+
# Add the current version hash to class attribute :versions
|
84
|
+
current_version = {}
|
85
|
+
current_version[name] = {
|
86
|
+
:uploader => uploader,
|
87
|
+
:options => options
|
88
|
+
}
|
89
|
+
self.versions = versions.merge(current_version)
|
90
|
+
|
91
|
+
versions[name][:uploader].version_names += [name]
|
92
|
+
|
93
|
+
class_eval <<-RUBY
|
94
|
+
def #{name}
|
95
|
+
versions[:#{name}]
|
96
|
+
end
|
97
|
+
RUBY
|
98
|
+
# as the processors get the output from the previous processors as their
|
99
|
+
# input we must not stack the processors here
|
100
|
+
versions[name][:uploader].processors = versions[name][:uploader].processors.dup
|
101
|
+
versions[name][:uploader].processors.clear
|
102
|
+
end
|
103
|
+
versions[name][:uploader].class_eval(&block) if block
|
104
|
+
versions[name]
|
105
|
+
end
|
106
|
+
|
107
|
+
def recursively_apply_block_to_versions(&block)
|
108
|
+
versions.each do |name, version|
|
109
|
+
version[:uploader].class_eval(&block)
|
110
|
+
version[:uploader].recursively_apply_block_to_versions(&block)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end # ClassMethods
|
114
|
+
|
115
|
+
##
|
116
|
+
# Returns a hash mapping the name of each version of the uploader to an instance of it
|
117
|
+
#
|
118
|
+
# === Returns
|
119
|
+
#
|
120
|
+
# [Hash{Symbol => CarrierWave::Uploader}] a list of uploader instances
|
121
|
+
#
|
122
|
+
def versions
|
123
|
+
return @versions if @versions
|
124
|
+
@versions = {}
|
125
|
+
self.class.versions.each do |name, version|
|
126
|
+
@versions[name] = version[:uploader].new(model, mounted_as)
|
127
|
+
end
|
128
|
+
@versions
|
129
|
+
end
|
130
|
+
|
131
|
+
##
|
132
|
+
# === Returns
|
133
|
+
#
|
134
|
+
# [String] the name of this version of the uploader
|
135
|
+
#
|
136
|
+
def version_name
|
137
|
+
self.class.version_names.join('_').to_sym unless self.class.version_names.blank?
|
138
|
+
end
|
139
|
+
|
140
|
+
##
|
141
|
+
# When given a version name as a parameter, will return the url for that version
|
142
|
+
# This also works with nested versions.
|
143
|
+
#
|
144
|
+
# === Example
|
145
|
+
#
|
146
|
+
# my_uploader.url # => /path/to/my/uploader.gif
|
147
|
+
# my_uploader.url(:thumb) # => /path/to/my/thumb_uploader.gif
|
148
|
+
# my_uploader.url(:thumb, :small) # => /path/to/my/thumb_small_uploader.gif
|
149
|
+
#
|
150
|
+
# === Parameters
|
151
|
+
#
|
152
|
+
# [*args (Symbol)] any number of versions
|
153
|
+
#
|
154
|
+
# === Returns
|
155
|
+
#
|
156
|
+
# [String] the location where this file is accessible via a url
|
157
|
+
#
|
158
|
+
def url(*args)
|
159
|
+
if(args.first)
|
160
|
+
raise ArgumentError, "Version #{args.first} doesn't exist!" if versions[args.first.to_sym].nil?
|
161
|
+
# recursively proxy to version
|
162
|
+
versions[args.first.to_sym].url(*args[1..-1])
|
163
|
+
else
|
164
|
+
super()
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
##
|
169
|
+
# Recreate versions and reprocess them. This can be used to recreate
|
170
|
+
# versions if their parameters somehow have changed.
|
171
|
+
#
|
172
|
+
def recreate_versions!
|
173
|
+
# Some files could possibly not be stored on the local disk. This
|
174
|
+
# doesn't play nicely with processing. Make sure that we're only
|
175
|
+
# processing a cached file
|
176
|
+
#
|
177
|
+
# The call to store! will trigger the necessary callbacks to both
|
178
|
+
# process this version and all sub-versions
|
179
|
+
cache_stored_file! if !cached?
|
180
|
+
|
181
|
+
store!
|
182
|
+
end
|
183
|
+
|
184
|
+
private
|
185
|
+
def assign_parent_cache_id(file)
|
186
|
+
active_versions.each do |name, uploader|
|
187
|
+
uploader.parent_cache_id = @cache_id
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
def active_versions
|
192
|
+
versions.select do |name, uploader|
|
193
|
+
condition = self.class.versions[name][:options][:if]
|
194
|
+
not condition or send(condition, file)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
def full_filename(for_file)
|
199
|
+
[version_name, super(for_file)].compact.join('_')
|
200
|
+
end
|
201
|
+
|
202
|
+
def full_original_filename
|
203
|
+
[version_name, super].compact.join('_')
|
204
|
+
end
|
205
|
+
|
206
|
+
def cache_versions!(new_file)
|
207
|
+
# We might have processed the new_file argument after the callbacks were
|
208
|
+
# initialized, so get the actual file based off of the current state of
|
209
|
+
# our file
|
210
|
+
processed_parent = SanitizedFile.new :tempfile => self.file,
|
211
|
+
:filename => new_file.original_filename
|
212
|
+
|
213
|
+
active_versions.each do |name, v|
|
214
|
+
v.send(:cache_id=, cache_id)
|
215
|
+
v.cache!(processed_parent)
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
def store_versions!(new_file)
|
220
|
+
active_versions.each { |name, v| v.store!(new_file) }
|
221
|
+
end
|
222
|
+
|
223
|
+
def remove_versions!
|
224
|
+
versions.each { |name, v| v.remove! }
|
225
|
+
end
|
226
|
+
|
227
|
+
def retrieve_versions_from_cache!(cache_name)
|
228
|
+
versions.each { |name, v| v.retrieve_from_cache!(cache_name) }
|
229
|
+
end
|
230
|
+
|
231
|
+
def retrieve_versions_from_store!(identifier)
|
232
|
+
versions.each { |name, v| v.retrieve_from_store!(identifier) }
|
233
|
+
end
|
234
|
+
|
235
|
+
end # Versions
|
236
|
+
end # Uploader
|
237
|
+
end # CarrierWave
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'active_model/validator'
|
4
|
+
require 'active_support/concern'
|
5
|
+
|
6
|
+
|
7
|
+
module CarrierWave
|
8
|
+
|
9
|
+
# == Active Model Presence Validator
|
10
|
+
module Validations
|
11
|
+
module ActiveModel
|
12
|
+
extend ActiveSupport::Concern
|
13
|
+
|
14
|
+
# class ProcessingValidator < ::ActiveModel::EachValidator
|
15
|
+
#
|
16
|
+
# def validate_each(record, attribute, value)
|
17
|
+
# if record.send("#{attribute}_processing_error")
|
18
|
+
# record.errors.add(attribute, :carrierwave_processing_error)
|
19
|
+
# end
|
20
|
+
# end
|
21
|
+
# end
|
22
|
+
|
23
|
+
class IntegrityValidator < ::ActiveModel::EachValidator
|
24
|
+
|
25
|
+
def validate_each(record, attribute, value)
|
26
|
+
if record.send("#{attribute}_integrity_error")
|
27
|
+
record.errors.add(attribute, :carrierwave_integrity_error)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
module HelperMethods
|
33
|
+
|
34
|
+
##
|
35
|
+
# Makes the record invalid if the file couldn't be uploaded due to an integrity error
|
36
|
+
#
|
37
|
+
# Accepts the usual parameters for validations in Rails (:if, :unless, etc...)
|
38
|
+
#
|
39
|
+
# === Note
|
40
|
+
#
|
41
|
+
# Set this key in your translations file for I18n:
|
42
|
+
#
|
43
|
+
# carrierwave:
|
44
|
+
# errors:
|
45
|
+
# integrity: 'Here be an error message'
|
46
|
+
#
|
47
|
+
def validates_integrity_of(*attr_names)
|
48
|
+
validates_with IntegrityValidator, _merge_attributes(attr_names)
|
49
|
+
end
|
50
|
+
|
51
|
+
##
|
52
|
+
# Makes the record invalid if the file couldn't be processed (assuming the process failed
|
53
|
+
# with a CarrierWave::ProcessingError)
|
54
|
+
#
|
55
|
+
# Accepts the usual parameters for validations in Rails (:if, :unless, etc...)
|
56
|
+
#
|
57
|
+
# === Note
|
58
|
+
#
|
59
|
+
# Set this key in your translations file for I18n:
|
60
|
+
#
|
61
|
+
# carrierwave:
|
62
|
+
# errors:
|
63
|
+
# processing: 'Here be an error message'
|
64
|
+
#
|
65
|
+
def validates_processing_of(*attr_names)
|
66
|
+
# validates_with ProcessingValidator, _merge_attributes(attr_names)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
included do
|
71
|
+
extend HelperMethods
|
72
|
+
include HelperMethods
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
I18n.load_path << File.join(File.dirname(__FILE__), "..", "locale", 'en.yml')
|
79
|
+
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class <%= class_name %>Uploader < CarrierWave::Uploader::Base
|
4
|
+
|
5
|
+
# Include RMagick or ImageScience support:
|
6
|
+
# include CarrierWave::RMagick
|
7
|
+
# include CarrierWave::MiniMagick
|
8
|
+
# include CarrierWave::ImageScience
|
9
|
+
|
10
|
+
# Choose what kind of storage to use for this uploader:
|
11
|
+
storage :file
|
12
|
+
# storage :fog
|
13
|
+
|
14
|
+
# Override the directory where uploaded files will be stored.
|
15
|
+
# This is a sensible default for uploaders that are meant to be mounted:
|
16
|
+
def store_dir
|
17
|
+
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
18
|
+
end
|
19
|
+
|
20
|
+
# Provide a default URL as a default if there hasn't been a file uploaded:
|
21
|
+
# def default_url
|
22
|
+
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
23
|
+
# end
|
24
|
+
|
25
|
+
# Process files as they are uploaded:
|
26
|
+
# process :scale => [200, 300]
|
27
|
+
#
|
28
|
+
# def scale(width, height)
|
29
|
+
# # do something
|
30
|
+
# end
|
31
|
+
|
32
|
+
# Create different versions of your uploaded files:
|
33
|
+
# version :thumb do
|
34
|
+
# process :scale => [50, 50]
|
35
|
+
# end
|
36
|
+
|
37
|
+
# Add a white list of extensions which are allowed to be uploaded.
|
38
|
+
# For images you might use something like this:
|
39
|
+
# def extension_white_list
|
40
|
+
# %w(jpg jpeg gif png)
|
41
|
+
# end
|
42
|
+
|
43
|
+
# Override the filename of the uploaded files:
|
44
|
+
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
45
|
+
# def filename
|
46
|
+
# "something.jpg" if original_filename
|
47
|
+
# end
|
48
|
+
|
49
|
+
end
|
metadata
ADDED
@@ -0,0 +1,215 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: plowdawg-carrierwave
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.8
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Jonas Nicklas
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-08-15 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: &19315860 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *19315860
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rails
|
27
|
+
requirement: &19315440 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3.0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *19315440
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: sqlite3
|
38
|
+
requirement: &19315140 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *19315140
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: cucumber
|
49
|
+
requirement: &19314792 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *19314792
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: json
|
60
|
+
requirement: &19314468 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *19314468
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: &19298616 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '2.0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *19298616
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: sham_rack
|
82
|
+
requirement: &19298352 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *19298352
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: timecop
|
93
|
+
requirement: &19298076 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *19298076
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: cloudfiles
|
104
|
+
requirement: &19297824 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *19297824
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: fog
|
115
|
+
requirement: &19297512 !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
type: :development
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: *19297512
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: mini_magick
|
126
|
+
requirement: &19297164 !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: *19297164
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: rmagick
|
137
|
+
requirement: &19296900 !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
143
|
+
type: :development
|
144
|
+
prerelease: false
|
145
|
+
version_requirements: *19296900
|
146
|
+
description: Upload files in your Ruby applications, map them to a range of ORMs,
|
147
|
+
store them on different backends.
|
148
|
+
email:
|
149
|
+
- jonas.nicklas@gmail.com
|
150
|
+
executables: []
|
151
|
+
extensions: []
|
152
|
+
extra_rdoc_files:
|
153
|
+
- README.md
|
154
|
+
files:
|
155
|
+
- lib/carrierwave/compatibility/paperclip.rb
|
156
|
+
- lib/carrierwave/locale/en.yml
|
157
|
+
- lib/carrierwave/mount.rb
|
158
|
+
- lib/carrierwave/orm/activerecord.rb
|
159
|
+
- lib/carrierwave/processing/mime_types.rb
|
160
|
+
- lib/carrierwave/processing/mini_magick.rb
|
161
|
+
- lib/carrierwave/processing/rmagick.rb
|
162
|
+
- lib/carrierwave/sanitized_file.rb
|
163
|
+
- lib/carrierwave/storage/abstract.rb
|
164
|
+
- lib/carrierwave/storage/cloud_files.rb
|
165
|
+
- lib/carrierwave/storage/file.rb
|
166
|
+
- lib/carrierwave/storage/fog.rb
|
167
|
+
- lib/carrierwave/storage/right_s3.rb
|
168
|
+
- lib/carrierwave/storage/s3.rb
|
169
|
+
- lib/carrierwave/test/matchers.rb
|
170
|
+
- lib/carrierwave/uploader/cache.rb
|
171
|
+
- lib/carrierwave/uploader/callbacks.rb
|
172
|
+
- lib/carrierwave/uploader/configuration.rb
|
173
|
+
- lib/carrierwave/uploader/default_url.rb
|
174
|
+
- lib/carrierwave/uploader/download.rb
|
175
|
+
- lib/carrierwave/uploader/extension_whitelist.rb
|
176
|
+
- lib/carrierwave/uploader/mountable.rb
|
177
|
+
- lib/carrierwave/uploader/processing.rb
|
178
|
+
- lib/carrierwave/uploader/proxy.rb
|
179
|
+
- lib/carrierwave/uploader/remove.rb
|
180
|
+
- lib/carrierwave/uploader/store.rb
|
181
|
+
- lib/carrierwave/uploader/url.rb
|
182
|
+
- lib/carrierwave/uploader/versions.rb
|
183
|
+
- lib/carrierwave/uploader.rb
|
184
|
+
- lib/carrierwave/validations/active_model.rb
|
185
|
+
- lib/carrierwave/version.rb
|
186
|
+
- lib/carrierwave.rb
|
187
|
+
- lib/generators/templates/uploader.rb
|
188
|
+
- lib/generators/uploader_generator.rb
|
189
|
+
- README.md
|
190
|
+
homepage: https://github.com/jnicklas/carrierwave
|
191
|
+
licenses: []
|
192
|
+
post_install_message:
|
193
|
+
rdoc_options:
|
194
|
+
- --main
|
195
|
+
require_paths:
|
196
|
+
- lib
|
197
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
198
|
+
none: false
|
199
|
+
requirements:
|
200
|
+
- - ! '>='
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '0'
|
203
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
|
+
none: false
|
205
|
+
requirements:
|
206
|
+
- - ! '>='
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
requirements: []
|
210
|
+
rubyforge_project: carrierwave
|
211
|
+
rubygems_version: 1.8.6
|
212
|
+
signing_key:
|
213
|
+
specification_version: 3
|
214
|
+
summary: Ruby file upload library
|
215
|
+
test_files: []
|