locomotive_carrierwave 0.5.0.1 → 0.5.4.beta1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +714 -0
- data/lib/carrierwave.rb +9 -3
- data/lib/carrierwave/compatibility/paperclip.rb +18 -18
- data/lib/carrierwave/mount.rb +30 -25
- data/lib/carrierwave/orm/activerecord.rb +14 -4
- data/lib/carrierwave/orm/mongoid.rb +29 -8
- data/lib/carrierwave/processing/image_science.rb +25 -2
- data/lib/carrierwave/processing/mini_magick.rb +4 -3
- data/lib/carrierwave/processing/rmagick.rb +3 -2
- data/lib/carrierwave/sanitized_file.rb +23 -38
- data/lib/carrierwave/storage/abstract.rb +0 -3
- data/lib/carrierwave/storage/cloud_files.rb +30 -10
- data/lib/carrierwave/storage/file.rb +1 -8
- data/lib/carrierwave/storage/fog.rb +332 -0
- data/lib/carrierwave/storage/grid_fs.rb +6 -6
- data/lib/carrierwave/storage/s3.rb +31 -34
- data/lib/carrierwave/test/matchers.rb +1 -1
- data/lib/carrierwave/uploader.rb +0 -1
- data/lib/carrierwave/uploader/cache.rb +28 -7
- data/lib/carrierwave/uploader/callbacks.rb +11 -17
- data/lib/carrierwave/uploader/configuration.rb +62 -34
- data/lib/carrierwave/uploader/download.rb +16 -5
- data/lib/carrierwave/uploader/extension_whitelist.rb +14 -3
- data/lib/carrierwave/uploader/mountable.rb +1 -1
- data/lib/carrierwave/uploader/processing.rb +20 -15
- data/lib/carrierwave/uploader/proxy.rb +16 -1
- data/lib/carrierwave/uploader/store.rb +3 -9
- data/lib/carrierwave/uploader/url.rb +3 -2
- data/lib/carrierwave/uploader/versions.rb +78 -25
- data/lib/carrierwave/version.rb +1 -1
- data/lib/generators/templates/uploader.rb +2 -1
- metadata +64 -102
- data/README.rdoc +0 -532
- data/lib/carrierwave/orm/datamapper.rb +0 -37
- data/lib/carrierwave/orm/sequel.rb +0 -45
- data/lib/carrierwave/uploader/rename.rb +0 -62
@@ -13,11 +13,11 @@ module CarrierWave
|
|
13
13
|
|
14
14
|
class RemoteFile
|
15
15
|
def initialize(uri)
|
16
|
-
@uri =
|
16
|
+
@uri = uri
|
17
17
|
end
|
18
18
|
|
19
19
|
def original_filename
|
20
|
-
File.basename(
|
20
|
+
File.basename(file.base_uri.path)
|
21
21
|
end
|
22
22
|
|
23
23
|
def respond_to?(*args)
|
@@ -52,13 +52,24 @@ module CarrierWave
|
|
52
52
|
#
|
53
53
|
def download!(uri)
|
54
54
|
unless uri.blank?
|
55
|
-
|
55
|
+
processed_uri = process_uri(uri)
|
56
|
+
file = RemoteFile.new(processed_uri)
|
56
57
|
raise CarrierWave::DownloadError, "trying to download a file which is not served over HTTP" unless file.http?
|
57
|
-
cache!(file)
|
58
|
+
cache!(file)
|
58
59
|
end
|
59
60
|
end
|
60
61
|
|
62
|
+
##
|
63
|
+
# Processes the given URL by parsing and escaping it. Public to allow overriding.
|
64
|
+
#
|
65
|
+
# === Parameters
|
66
|
+
#
|
67
|
+
# [url (String)] The URL where the remote file is stored
|
68
|
+
#
|
69
|
+
def process_uri(uri)
|
70
|
+
URI.parse(URI.escape(URI.unescape(uri)))
|
71
|
+
end
|
72
|
+
|
61
73
|
end # Download
|
62
74
|
end # Uploader
|
63
75
|
end # CarrierWave
|
64
|
-
|
@@ -11,11 +11,15 @@ module CarrierWave
|
|
11
11
|
|
12
12
|
##
|
13
13
|
# Override this method in your uploader to provide a white list of extensions which
|
14
|
-
# are allowed to be uploaded.
|
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.
|
15
19
|
#
|
16
20
|
# === Returns
|
17
21
|
#
|
18
|
-
# [NilClass, Array[String]] a white list of extensions which are allowed to be uploaded
|
22
|
+
# [NilClass, Array[String,Regexp]] a white list of extensions which are allowed to be uploaded
|
19
23
|
#
|
20
24
|
# === Examples
|
21
25
|
#
|
@@ -23,12 +27,19 @@ module CarrierWave
|
|
23
27
|
# %w(jpg jpeg gif png)
|
24
28
|
# end
|
25
29
|
#
|
30
|
+
# Basically the same, but using a Regexp:
|
31
|
+
#
|
32
|
+
# def extension_white_list
|
33
|
+
# [/jpe?g/, 'gif', 'png']
|
34
|
+
# end
|
35
|
+
#
|
26
36
|
def extension_white_list; end
|
27
37
|
|
28
38
|
private
|
29
39
|
|
30
40
|
def check_whitelist!(new_file)
|
31
|
-
|
41
|
+
extension = new_file.extension.to_s
|
42
|
+
if extension_white_list and not extension_white_list.detect { |item| extension =~ /\A#{item}\z/i }
|
32
43
|
raise CarrierWave::IntegrityError, "You are not allowed to upload #{new_file.extension.inspect} files, allowed types: #{extension_white_list.inspect}"
|
33
44
|
end
|
34
45
|
end
|
@@ -8,23 +8,14 @@ module CarrierWave
|
|
8
8
|
include CarrierWave::Uploader::Callbacks
|
9
9
|
|
10
10
|
included do
|
11
|
+
class_inheritable_accessor :processors, :instance_reader => false, :instance_writer => false
|
12
|
+
self.processors = []
|
13
|
+
|
11
14
|
after :cache, :process!
|
12
|
-
after :recreate_versions, :process!
|
13
15
|
end
|
14
16
|
|
15
17
|
module ClassMethods
|
16
18
|
|
17
|
-
##
|
18
|
-
# Lists processor callbacks declared
|
19
|
-
#
|
20
|
-
# === Returns
|
21
|
-
#
|
22
|
-
# [Array[Array[Symbol, Array]]] a list of processor callbacks which have been declared for this uploader
|
23
|
-
#
|
24
|
-
def processors
|
25
|
-
@processors ||= []
|
26
|
-
end
|
27
|
-
|
28
19
|
##
|
29
20
|
# Adds a processor callback which applies operations as a file is uploaded.
|
30
21
|
# The argument may be the name of any method of the uploader, expressed as a symbol,
|
@@ -41,6 +32,8 @@ module CarrierWave
|
|
41
32
|
#
|
42
33
|
# process :sepiatone, :vignette
|
43
34
|
# process :scale => [200, 200]
|
35
|
+
# process :scale => [200, 200], :if => :image?
|
36
|
+
# process :sepiatone, :if => :image?
|
44
37
|
#
|
45
38
|
# def sepiatone
|
46
39
|
# ...
|
@@ -53,16 +46,27 @@ module CarrierWave
|
|
53
46
|
# def scale(height, width)
|
54
47
|
# ...
|
55
48
|
# end
|
49
|
+
#
|
50
|
+
# def image?
|
51
|
+
# ...
|
52
|
+
# end
|
53
|
+
#
|
56
54
|
# end
|
57
55
|
#
|
58
56
|
def process(*args)
|
57
|
+
if !args.first.is_a?(Hash) && args.last.is_a?(Hash)
|
58
|
+
conditions = args.pop
|
59
|
+
args.map!{ |arg| {arg => []}.merge(conditions) }
|
60
|
+
end
|
61
|
+
|
59
62
|
args.each do |arg|
|
60
63
|
if arg.is_a?(Hash)
|
64
|
+
condition = arg.delete(:if)
|
61
65
|
arg.each do |method, args|
|
62
|
-
processors.push([method, args])
|
66
|
+
processors.push([method, args, condition])
|
63
67
|
end
|
64
68
|
else
|
65
|
-
processors.push([arg, []])
|
69
|
+
processors.push([arg, [], nil])
|
66
70
|
end
|
67
71
|
end
|
68
72
|
end
|
@@ -74,7 +78,8 @@ module CarrierWave
|
|
74
78
|
#
|
75
79
|
def process!(new_file=nil)
|
76
80
|
if enable_processing
|
77
|
-
self.class.processors.each do |method, args|
|
81
|
+
self.class.processors.each do |method, args, condition|
|
82
|
+
next if condition && !self.send(condition, new_file)
|
78
83
|
self.send(method, *args)
|
79
84
|
end
|
80
85
|
end
|
@@ -57,6 +57,21 @@ module CarrierWave
|
|
57
57
|
file.respond_to?(:size) ? file.size : 0
|
58
58
|
end
|
59
59
|
|
60
|
+
##
|
61
|
+
# Return the size of the file when asked for its length
|
62
|
+
#
|
63
|
+
# === Returns
|
64
|
+
#
|
65
|
+
# [Integer] size of the file
|
66
|
+
#
|
67
|
+
# === Note
|
68
|
+
#
|
69
|
+
# This was added because of the way Rails handles length/size validations in 3.0.6 and above.
|
70
|
+
#
|
71
|
+
def length
|
72
|
+
size
|
73
|
+
end
|
74
|
+
|
60
75
|
end # Proxy
|
61
76
|
end # Uploader
|
62
|
-
end # CarrierWave
|
77
|
+
end # CarrierWave
|
@@ -27,10 +27,6 @@ module CarrierWave
|
|
27
27
|
@filename
|
28
28
|
end
|
29
29
|
|
30
|
-
def delete_original_file?
|
31
|
-
@original_file && @original_file.path != @file.path # if the path hasn't changed, no need to delete it
|
32
|
-
end
|
33
|
-
|
34
30
|
##
|
35
31
|
# Calculates the path where the file should be stored. If +for_file+ is given, it will be
|
36
32
|
# used as the filename, otherwise +CarrierWave::Uploader#filename+ is assumed.
|
@@ -60,12 +56,10 @@ module CarrierWave
|
|
60
56
|
cache!(new_file) if new_file
|
61
57
|
if @file and @cache_id
|
62
58
|
with_callbacks(:store, new_file) do
|
63
|
-
|
64
|
-
|
65
|
-
@
|
66
|
-
|
59
|
+
new_file = storage.store!(@file)
|
60
|
+
@file.delete if delete_tmp_file_after_storage
|
61
|
+
@file = new_file
|
67
62
|
@cache_id = nil
|
68
|
-
@original_file = nil
|
69
63
|
end
|
70
64
|
end
|
71
65
|
end
|
@@ -22,10 +22,11 @@ module CarrierWave
|
|
22
22
|
##
|
23
23
|
# === Returns
|
24
24
|
#
|
25
|
-
# [String] A JSON
|
25
|
+
# [String] A JSON serialization containing this uploader's URL(s)
|
26
26
|
#
|
27
27
|
def as_json(options = nil)
|
28
|
-
{ :url => url }
|
28
|
+
h = { :url => url }
|
29
|
+
h.merge Hash[versions.map { |name, version| [name, { :url => version.url }] }]
|
29
30
|
end
|
30
31
|
|
31
32
|
end # Url
|
@@ -8,6 +8,12 @@ module CarrierWave
|
|
8
8
|
include CarrierWave::Uploader::Callbacks
|
9
9
|
|
10
10
|
included do
|
11
|
+
class_inheritable_accessor :versions, :instance_reader => false, :instance_writer => false
|
12
|
+
self.versions = {}
|
13
|
+
|
14
|
+
class_inheritable_accessor :version_names, :instance_reader => false, :instance_writer => false
|
15
|
+
self.version_names = []
|
16
|
+
|
11
17
|
after :cache, :cache_versions!
|
12
18
|
after :store, :store_versions!
|
13
19
|
after :remove, :remove_versions!
|
@@ -17,43 +23,71 @@ module CarrierWave
|
|
17
23
|
|
18
24
|
module ClassMethods
|
19
25
|
|
20
|
-
def version_names
|
21
|
-
@version_names ||= []
|
22
|
-
end
|
23
|
-
|
24
26
|
##
|
25
27
|
# Adds a new version to this uploader
|
26
28
|
#
|
27
29
|
# === Parameters
|
28
30
|
#
|
29
31
|
# [name (#to_sym)] name of the version
|
32
|
+
# [options (Hash)] optional options hash
|
30
33
|
# [&block (Proc)] a block to eval on this version of the uploader
|
31
34
|
#
|
32
|
-
|
35
|
+
# === Examples
|
36
|
+
#
|
37
|
+
# class MyUploader < CarrierWave::Uploader::Base
|
38
|
+
#
|
39
|
+
# version :thumb do
|
40
|
+
# process :scale => [200, 200]
|
41
|
+
# end
|
42
|
+
#
|
43
|
+
# version :preview, :if => :image? do
|
44
|
+
# process :scale => [200, 200]
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
# end
|
48
|
+
#
|
49
|
+
def version(name, options = {}, &block)
|
33
50
|
name = name.to_sym
|
34
51
|
unless versions[name]
|
35
|
-
|
36
|
-
|
37
|
-
versions
|
52
|
+
uploader = Class.new(self)
|
53
|
+
|
54
|
+
# Define the enable_processing method for versions so they get the
|
55
|
+
# value from the parent class unless explicitly overwritten
|
56
|
+
uploader.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
57
|
+
def self.enable_processing(value=nil)
|
58
|
+
self.enable_processing = value if value
|
59
|
+
if !@enable_processing.nil?
|
60
|
+
@enable_processing
|
61
|
+
else
|
62
|
+
superclass.enable_processing
|
63
|
+
end
|
64
|
+
end
|
65
|
+
RUBY
|
66
|
+
|
67
|
+
versions[name] = {
|
68
|
+
:uploader => uploader,
|
69
|
+
:options => options,
|
70
|
+
}
|
71
|
+
versions[name][:uploader].version_names.push(name)
|
38
72
|
class_eval <<-RUBY
|
39
73
|
def #{name}
|
40
74
|
versions[:#{name}]
|
41
75
|
end
|
42
76
|
RUBY
|
77
|
+
# as the processors get the output from the previous processors as their
|
78
|
+
# input we must not stack the processors here
|
79
|
+
versions[name][:uploader].processors.clear
|
43
80
|
end
|
44
|
-
versions[name].class_eval(&block) if block
|
81
|
+
versions[name][:uploader].class_eval(&block) if block
|
45
82
|
versions[name]
|
46
83
|
end
|
47
84
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
def versions
|
54
|
-
@versions ||= {}
|
85
|
+
def recursively_apply_block_to_versions(&block)
|
86
|
+
versions.each do |name, version|
|
87
|
+
version[:uploader].class_eval(&block)
|
88
|
+
version[:uploader].recursively_apply_block_to_versions(&block)
|
89
|
+
end
|
55
90
|
end
|
56
|
-
|
57
91
|
end # ClassMethods
|
58
92
|
|
59
93
|
##
|
@@ -66,8 +100,8 @@ module CarrierWave
|
|
66
100
|
def versions
|
67
101
|
return @versions if @versions
|
68
102
|
@versions = {}
|
69
|
-
self.class.versions.each do |name,
|
70
|
-
@versions[name] =
|
103
|
+
self.class.versions.each do |name, version|
|
104
|
+
@versions[name] = version[:uploader].new(model, mounted_as)
|
71
105
|
end
|
72
106
|
@versions
|
73
107
|
end
|
@@ -114,13 +148,26 @@ module CarrierWave
|
|
114
148
|
# versions if their parameters somehow have changed.
|
115
149
|
#
|
116
150
|
def recreate_versions!
|
117
|
-
|
118
|
-
|
119
|
-
|
151
|
+
# Some files could possibly not be stored on the local disk. This
|
152
|
+
# doesn't play nicely with processing. Make sure that we're only
|
153
|
+
# processing a cached file
|
154
|
+
#
|
155
|
+
# The call to store! will trigger the necessary callbacks to both
|
156
|
+
# process this version and all sub-versions
|
157
|
+
cache_stored_file! if !cached?
|
158
|
+
|
159
|
+
store!
|
120
160
|
end
|
121
161
|
|
122
162
|
private
|
123
163
|
|
164
|
+
def active_versions
|
165
|
+
versions.select do |name, uploader|
|
166
|
+
condition = self.class.versions[name][:options][:if]
|
167
|
+
not condition or send(condition, file)
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
124
171
|
def full_filename(for_file)
|
125
172
|
[version_name, super(for_file)].compact.join('_')
|
126
173
|
end
|
@@ -130,14 +177,20 @@ module CarrierWave
|
|
130
177
|
end
|
131
178
|
|
132
179
|
def cache_versions!(new_file)
|
133
|
-
|
180
|
+
# We might have processed the new_file argument after the callbacks were
|
181
|
+
# initialized, so get the actual file based off of the current state of
|
182
|
+
# our file
|
183
|
+
processed_parent = SanitizedFile.new :tempfile => self.file,
|
184
|
+
:filename => new_file.original_filename
|
185
|
+
|
186
|
+
active_versions.each do |name, v|
|
134
187
|
v.send(:cache_id=, cache_id)
|
135
|
-
v.cache!(
|
188
|
+
v.cache!(processed_parent)
|
136
189
|
end
|
137
190
|
end
|
138
191
|
|
139
192
|
def store_versions!(new_file)
|
140
|
-
|
193
|
+
active_versions.each { |name, v| v.store!(new_file) }
|
141
194
|
end
|
142
195
|
|
143
196
|
def remove_versions!
|
data/lib/carrierwave/version.rb
CHANGED
@@ -8,7 +8,7 @@ class <%= class_name %>Uploader < CarrierWave::Uploader::Base
|
|
8
8
|
|
9
9
|
# Choose what kind of storage to use for this uploader:
|
10
10
|
storage :file
|
11
|
-
# storage :
|
11
|
+
# storage :fog
|
12
12
|
|
13
13
|
# Override the directory where uploaded files will be stored.
|
14
14
|
# This is a sensible default for uploaders that are meant to be mounted:
|
@@ -40,6 +40,7 @@ class <%= class_name %>Uploader < CarrierWave::Uploader::Base
|
|
40
40
|
# end
|
41
41
|
|
42
42
|
# Override the filename of the uploaded files:
|
43
|
+
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
43
44
|
# def filename
|
44
45
|
# "something.jpg" if original_filename
|
45
46
|
# end
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: locomotive_carrierwave
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 62196433
|
5
|
+
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 5
|
9
|
-
-
|
9
|
+
- 4
|
10
|
+
- beta
|
10
11
|
- 1
|
11
|
-
version: 0.5.
|
12
|
+
version: 0.5.4.beta1
|
12
13
|
platform: ruby
|
13
14
|
authors:
|
14
15
|
- Jonas Nicklas
|
@@ -17,13 +18,12 @@ autorequire:
|
|
17
18
|
bindir: bin
|
18
19
|
cert_chain: []
|
19
20
|
|
20
|
-
date:
|
21
|
-
default_executable:
|
21
|
+
date: 2011-06-10 00:00:00 Z
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
24
|
-
type: :runtime
|
25
|
-
prerelease: false
|
26
24
|
name: activesupport
|
25
|
+
prerelease: false
|
26
|
+
type: :runtime
|
27
27
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
@@ -36,9 +36,9 @@ dependencies:
|
|
36
36
|
version: "3.0"
|
37
37
|
requirement: *id001
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
|
-
type: :development
|
40
|
-
prerelease: false
|
41
39
|
name: rails
|
40
|
+
prerelease: false
|
41
|
+
type: :development
|
42
42
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
43
43
|
none: false
|
44
44
|
requirements:
|
@@ -48,45 +48,41 @@ dependencies:
|
|
48
48
|
segments:
|
49
49
|
- 3
|
50
50
|
- 0
|
51
|
-
|
52
|
-
version: 3.0.0
|
51
|
+
version: "3.0"
|
53
52
|
requirement: *id002
|
54
53
|
- !ruby/object:Gem::Dependency
|
55
|
-
type: :development
|
56
|
-
prerelease: false
|
57
54
|
name: rspec
|
55
|
+
prerelease: false
|
56
|
+
type: :development
|
58
57
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
59
58
|
none: false
|
60
59
|
requirements:
|
61
60
|
- - ~>
|
62
61
|
- !ruby/object:Gem::Version
|
63
|
-
hash:
|
62
|
+
hash: 3
|
64
63
|
segments:
|
65
|
-
-
|
66
|
-
- 3
|
64
|
+
- 2
|
67
65
|
- 0
|
68
|
-
version:
|
66
|
+
version: "2.0"
|
69
67
|
requirement: *id003
|
70
68
|
- !ruby/object:Gem::Dependency
|
71
|
-
|
69
|
+
name: excon
|
72
70
|
prerelease: false
|
73
|
-
|
71
|
+
type: :development
|
74
72
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
75
73
|
none: false
|
76
74
|
requirements:
|
77
|
-
- -
|
75
|
+
- - ">="
|
78
76
|
- !ruby/object:Gem::Version
|
79
|
-
hash:
|
77
|
+
hash: 3
|
80
78
|
segments:
|
81
79
|
- 0
|
82
|
-
|
83
|
-
- 7
|
84
|
-
version: 0.3.7
|
80
|
+
version: "0"
|
85
81
|
requirement: *id004
|
86
82
|
- !ruby/object:Gem::Dependency
|
87
|
-
|
83
|
+
name: fog
|
88
84
|
prerelease: false
|
89
|
-
|
85
|
+
type: :development
|
90
86
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
91
87
|
none: false
|
92
88
|
requirements:
|
@@ -98,9 +94,9 @@ dependencies:
|
|
98
94
|
version: "0"
|
99
95
|
requirement: *id005
|
100
96
|
- !ruby/object:Gem::Dependency
|
101
|
-
|
97
|
+
name: cucumber
|
102
98
|
prerelease: false
|
103
|
-
|
99
|
+
type: :development
|
104
100
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
105
101
|
none: false
|
106
102
|
requirements:
|
@@ -112,9 +108,9 @@ dependencies:
|
|
112
108
|
version: "0"
|
113
109
|
requirement: *id006
|
114
110
|
- !ruby/object:Gem::Dependency
|
115
|
-
|
111
|
+
name: sqlite3
|
116
112
|
prerelease: false
|
117
|
-
|
113
|
+
type: :development
|
118
114
|
version_requirements: &id007 !ruby/object:Gem::Requirement
|
119
115
|
none: false
|
120
116
|
requirements:
|
@@ -126,9 +122,9 @@ dependencies:
|
|
126
122
|
version: "0"
|
127
123
|
requirement: *id007
|
128
124
|
- !ruby/object:Gem::Dependency
|
129
|
-
|
125
|
+
name: rmagick
|
130
126
|
prerelease: false
|
131
|
-
|
127
|
+
type: :development
|
132
128
|
version_requirements: &id008 !ruby/object:Gem::Requirement
|
133
129
|
none: false
|
134
130
|
requirements:
|
@@ -140,9 +136,9 @@ dependencies:
|
|
140
136
|
version: "0"
|
141
137
|
requirement: *id008
|
142
138
|
- !ruby/object:Gem::Dependency
|
143
|
-
|
139
|
+
name: RubyInline
|
144
140
|
prerelease: false
|
145
|
-
|
141
|
+
type: :development
|
146
142
|
version_requirements: &id009 !ruby/object:Gem::Requirement
|
147
143
|
none: false
|
148
144
|
requirements:
|
@@ -154,9 +150,9 @@ dependencies:
|
|
154
150
|
version: "0"
|
155
151
|
requirement: *id009
|
156
152
|
- !ruby/object:Gem::Dependency
|
157
|
-
|
153
|
+
name: image_science
|
158
154
|
prerelease: false
|
159
|
-
|
155
|
+
type: :development
|
160
156
|
version_requirements: &id010 !ruby/object:Gem::Requirement
|
161
157
|
none: false
|
162
158
|
requirements:
|
@@ -168,9 +164,9 @@ dependencies:
|
|
168
164
|
version: "0"
|
169
165
|
requirement: *id010
|
170
166
|
- !ruby/object:Gem::Dependency
|
171
|
-
|
167
|
+
name: mini_magick
|
172
168
|
prerelease: false
|
173
|
-
|
169
|
+
type: :development
|
174
170
|
version_requirements: &id011 !ruby/object:Gem::Requirement
|
175
171
|
none: false
|
176
172
|
requirements:
|
@@ -182,9 +178,9 @@ dependencies:
|
|
182
178
|
version: "0"
|
183
179
|
requirement: *id011
|
184
180
|
- !ruby/object:Gem::Dependency
|
185
|
-
|
181
|
+
name: bson_ext
|
186
182
|
prerelease: false
|
187
|
-
|
183
|
+
type: :development
|
188
184
|
version_requirements: &id012 !ruby/object:Gem::Requirement
|
189
185
|
none: false
|
190
186
|
requirements:
|
@@ -196,9 +192,9 @@ dependencies:
|
|
196
192
|
version: "0"
|
197
193
|
requirement: *id012
|
198
194
|
- !ruby/object:Gem::Dependency
|
199
|
-
|
195
|
+
name: mongoid
|
200
196
|
prerelease: false
|
201
|
-
|
197
|
+
type: :development
|
202
198
|
version_requirements: &id013 !ruby/object:Gem::Requirement
|
203
199
|
none: false
|
204
200
|
requirements:
|
@@ -210,9 +206,9 @@ dependencies:
|
|
210
206
|
version: "0"
|
211
207
|
requirement: *id013
|
212
208
|
- !ruby/object:Gem::Dependency
|
213
|
-
|
209
|
+
name: timecop
|
214
210
|
prerelease: false
|
215
|
-
|
211
|
+
type: :development
|
216
212
|
version_requirements: &id014 !ruby/object:Gem::Requirement
|
217
213
|
none: false
|
218
214
|
requirements:
|
@@ -224,43 +220,10 @@ dependencies:
|
|
224
220
|
version: "0"
|
225
221
|
requirement: *id014
|
226
222
|
- !ruby/object:Gem::Dependency
|
227
|
-
|
228
|
-
prerelease: false
|
229
|
-
name: mini_magick
|
230
|
-
version_requirements: &id015 !ruby/object:Gem::Requirement
|
231
|
-
none: false
|
232
|
-
requirements:
|
233
|
-
- - ~>
|
234
|
-
- !ruby/object:Gem::Version
|
235
|
-
hash: 1
|
236
|
-
segments:
|
237
|
-
- 2
|
238
|
-
- 1
|
239
|
-
version: "2.1"
|
240
|
-
requirement: *id015
|
241
|
-
- !ruby/object:Gem::Dependency
|
242
|
-
type: :development
|
223
|
+
name: json
|
243
224
|
prerelease: false
|
244
|
-
name: mongoid
|
245
|
-
version_requirements: &id016 !ruby/object:Gem::Requirement
|
246
|
-
none: false
|
247
|
-
requirements:
|
248
|
-
- - "="
|
249
|
-
- !ruby/object:Gem::Version
|
250
|
-
hash: 62196417
|
251
|
-
segments:
|
252
|
-
- 2
|
253
|
-
- 0
|
254
|
-
- 0
|
255
|
-
- beta
|
256
|
-
- 17
|
257
|
-
version: 2.0.0.beta.17
|
258
|
-
requirement: *id016
|
259
|
-
- !ruby/object:Gem::Dependency
|
260
225
|
type: :development
|
261
|
-
|
262
|
-
name: bson_ext
|
263
|
-
version_requirements: &id017 !ruby/object:Gem::Requirement
|
226
|
+
version_requirements: &id015 !ruby/object:Gem::Requirement
|
264
227
|
none: false
|
265
228
|
requirements:
|
266
229
|
- - ">="
|
@@ -269,12 +232,12 @@ dependencies:
|
|
269
232
|
segments:
|
270
233
|
- 0
|
271
234
|
version: "0"
|
272
|
-
requirement: *
|
235
|
+
requirement: *id015
|
273
236
|
- !ruby/object:Gem::Dependency
|
274
|
-
|
237
|
+
name: cloudfiles
|
275
238
|
prerelease: false
|
276
|
-
|
277
|
-
version_requirements: &
|
239
|
+
type: :development
|
240
|
+
version_requirements: &id016 !ruby/object:Gem::Requirement
|
278
241
|
none: false
|
279
242
|
requirements:
|
280
243
|
- - ">="
|
@@ -283,12 +246,12 @@ dependencies:
|
|
283
246
|
segments:
|
284
247
|
- 0
|
285
248
|
version: "0"
|
286
|
-
requirement: *
|
249
|
+
requirement: *id016
|
287
250
|
- !ruby/object:Gem::Dependency
|
288
|
-
|
251
|
+
name: sham_rack
|
289
252
|
prerelease: false
|
290
|
-
|
291
|
-
version_requirements: &
|
253
|
+
type: :development
|
254
|
+
version_requirements: &id017 !ruby/object:Gem::Requirement
|
292
255
|
none: false
|
293
256
|
requirements:
|
294
257
|
- - ">="
|
@@ -297,7 +260,7 @@ dependencies:
|
|
297
260
|
segments:
|
298
261
|
- 0
|
299
262
|
version: "0"
|
300
|
-
requirement: *
|
263
|
+
requirement: *id017
|
301
264
|
description: Upload files in your Ruby applications, map them to a range of ORMs, store them on different backends.
|
302
265
|
email:
|
303
266
|
- jonas.nicklas@gmail.com
|
@@ -307,15 +270,13 @@ executables: []
|
|
307
270
|
extensions: []
|
308
271
|
|
309
272
|
extra_rdoc_files:
|
310
|
-
- README.
|
273
|
+
- README.md
|
311
274
|
files:
|
312
275
|
- lib/carrierwave/compatibility/paperclip.rb
|
313
276
|
- lib/carrierwave/locale/en.yml
|
314
277
|
- lib/carrierwave/mount.rb
|
315
278
|
- lib/carrierwave/orm/activerecord.rb
|
316
|
-
- lib/carrierwave/orm/datamapper.rb
|
317
279
|
- lib/carrierwave/orm/mongoid.rb
|
318
|
-
- lib/carrierwave/orm/sequel.rb
|
319
280
|
- lib/carrierwave/processing/image_science.rb
|
320
281
|
- lib/carrierwave/processing/mini_magick.rb
|
321
282
|
- lib/carrierwave/processing/rmagick.rb
|
@@ -323,6 +284,7 @@ files:
|
|
323
284
|
- lib/carrierwave/storage/abstract.rb
|
324
285
|
- lib/carrierwave/storage/cloud_files.rb
|
325
286
|
- lib/carrierwave/storage/file.rb
|
287
|
+
- lib/carrierwave/storage/fog.rb
|
326
288
|
- lib/carrierwave/storage/grid_fs.rb
|
327
289
|
- lib/carrierwave/storage/right_s3.rb
|
328
290
|
- lib/carrierwave/storage/s3.rb
|
@@ -337,7 +299,6 @@ files:
|
|
337
299
|
- lib/carrierwave/uploader/processing.rb
|
338
300
|
- lib/carrierwave/uploader/proxy.rb
|
339
301
|
- lib/carrierwave/uploader/remove.rb
|
340
|
-
- lib/carrierwave/uploader/rename.rb
|
341
302
|
- lib/carrierwave/uploader/store.rb
|
342
303
|
- lib/carrierwave/uploader/url.rb
|
343
304
|
- lib/carrierwave/uploader/versions.rb
|
@@ -347,15 +308,14 @@ files:
|
|
347
308
|
- lib/carrierwave.rb
|
348
309
|
- lib/generators/templates/uploader.rb
|
349
310
|
- lib/generators/uploader_generator.rb
|
350
|
-
- README.
|
351
|
-
|
352
|
-
homepage: http://carrierwave.rubyforge.org
|
311
|
+
- README.md
|
312
|
+
homepage: https://github.com/jnicklas/carrierwave
|
353
313
|
licenses: []
|
354
314
|
|
355
315
|
post_install_message:
|
356
316
|
rdoc_options:
|
357
317
|
- --main
|
358
|
-
- README.
|
318
|
+
- README.md
|
359
319
|
require_paths:
|
360
320
|
- lib
|
361
321
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -370,16 +330,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
370
330
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
371
331
|
none: false
|
372
332
|
requirements:
|
373
|
-
- - "
|
333
|
+
- - ">"
|
374
334
|
- !ruby/object:Gem::Version
|
375
|
-
hash:
|
335
|
+
hash: 25
|
376
336
|
segments:
|
377
|
-
-
|
378
|
-
|
337
|
+
- 1
|
338
|
+
- 3
|
339
|
+
- 1
|
340
|
+
version: 1.3.1
|
379
341
|
requirements: []
|
380
342
|
|
381
343
|
rubyforge_project: carrierwave
|
382
|
-
rubygems_version: 1.
|
344
|
+
rubygems_version: 1.8.5
|
383
345
|
signing_key:
|
384
346
|
specification_version: 3
|
385
347
|
summary: Ruby file upload library
|