carrierwave 0.4.5 → 0.4.6
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of carrierwave might be problematic. Click here for more details.
- data/README.rdoc +33 -15
- data/lib/carrierwave.rb +0 -1
- data/lib/carrierwave/compatibility/paperclip.rb +2 -2
- data/lib/carrierwave/orm/activerecord.rb +9 -5
- data/lib/carrierwave/orm/datamapper.rb +10 -0
- data/lib/carrierwave/processing/mini_magick.rb +1 -1
- data/lib/carrierwave/processing/rmagick.rb +4 -4
- data/lib/carrierwave/sanitized_file.rb +2 -2
- data/lib/carrierwave/storage/cloud_files.rb +11 -12
- data/lib/carrierwave/storage/grid_fs.rb +37 -26
- data/lib/carrierwave/storage/right_s3.rb +1 -168
- data/lib/carrierwave/storage/s3.rb +73 -66
- data/lib/carrierwave/test/matchers.rb +57 -21
- data/lib/carrierwave/uploader/configuration.rb +8 -5
- data/lib/carrierwave/uploader/processing.rb +1 -0
- data/lib/carrierwave/uploader/url.rb +2 -2
- data/lib/carrierwave/uploader/versions.rb +10 -0
- metadata +31 -279
- data/Generators +0 -4
- data/History.txt +0 -125
- data/Manifest.txt +0 -111
- data/Rakefile +0 -39
- data/carrierwave.gemspec +0 -85
- data/cucumber.yml +0 -2
- data/features/caching.feature +0 -28
- data/features/download.feature +0 -20
- data/features/file_storage.feature +0 -37
- data/features/file_storage_overridden_filename.feature +0 -38
- data/features/file_storage_overridden_store_dir.feature +0 -38
- data/features/file_storage_reversing_processor.feature +0 -43
- data/features/fixtures/bork.txt +0 -1
- data/features/fixtures/monkey.txt +0 -1
- data/features/grid_fs_storage.feature +0 -32
- data/features/mount_activerecord.feature +0 -46
- data/features/mount_datamapper.feature +0 -46
- data/features/step_definitions/activerecord_steps.rb +0 -22
- data/features/step_definitions/caching_steps.rb +0 -14
- data/features/step_definitions/datamapper_steps.rb +0 -29
- data/features/step_definitions/download_steps.rb +0 -4
- data/features/step_definitions/file_steps.rb +0 -53
- data/features/step_definitions/general_steps.rb +0 -85
- data/features/step_definitions/mount_steps.rb +0 -19
- data/features/step_definitions/store_steps.rb +0 -18
- data/features/support/activerecord.rb +0 -30
- data/features/support/datamapper.rb +0 -7
- data/features/support/env.rb +0 -22
- data/features/versions_basics.feature +0 -50
- data/features/versions_nested_versions.feature +0 -70
- data/features/versions_overridden_filename.feature +0 -51
- data/features/versions_overriden_store_dir.feature +0 -41
- data/lib/carrierwave/orm/mongomapper.rb +0 -27
- data/merb_generators/uploader_generator.rb +0 -22
- data/rails_generators/uploader/USAGE +0 -2
- data/rails_generators/uploader/templates/uploader.rb +0 -47
- data/rails_generators/uploader/uploader_generator.rb +0 -21
- data/script/console +0 -10
- data/script/destroy +0 -14
- data/script/generate +0 -14
- data/spec/compatibility/paperclip_spec.rb +0 -52
- data/spec/fixtures/bork.txt +0 -1
- data/spec/fixtures/landscape.jpg +0 -0
- data/spec/fixtures/portrait.jpg +0 -0
- data/spec/fixtures/test.jpeg +0 -1
- data/spec/fixtures/test.jpg +0 -1
- data/spec/mount_spec.rb +0 -538
- data/spec/orm/activerecord_spec.rb +0 -271
- data/spec/orm/datamapper_spec.rb +0 -168
- data/spec/orm/mongoid_spec.rb +0 -202
- data/spec/orm/mongomapper_spec.rb +0 -202
- data/spec/orm/sequel_spec.rb +0 -183
- data/spec/processing/image_science_spec.rb +0 -56
- data/spec/processing/mini_magick_spec.rb +0 -76
- data/spec/processing/rmagick_spec.rb +0 -75
- data/spec/sanitized_file_spec.rb +0 -623
- data/spec/spec_helper.rb +0 -92
- data/spec/storage/cloudfiles_spec.rb +0 -78
- data/spec/storage/grid_fs_spec.rb +0 -83
- data/spec/storage/right_s3_spec.rb +0 -83
- data/spec/storage/s3_spec.rb +0 -95
- data/spec/uploader/cache_spec.rb +0 -209
- data/spec/uploader/configuration_spec.rb +0 -105
- data/spec/uploader/default_url_spec.rb +0 -85
- data/spec/uploader/download_spec.rb +0 -75
- data/spec/uploader/extension_whitelist_spec.rb +0 -44
- data/spec/uploader/mountable_spec.rb +0 -33
- data/spec/uploader/paths_spec.rb +0 -22
- data/spec/uploader/processing_spec.rb +0 -73
- data/spec/uploader/proxy_spec.rb +0 -54
- data/spec/uploader/remove_spec.rb +0 -70
- data/spec/uploader/store_spec.rb +0 -264
- data/spec/uploader/url_spec.rb +0 -102
- data/spec/uploader/versions_spec.rb +0 -298
@@ -1,13 +1,17 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
2
|
+
begin
|
3
|
+
require 'aws'
|
4
|
+
rescue LoadError
|
5
|
+
raise "You don't have the 'aws' gem installed. 'aws-s3' and 'right_aws' are no longer supported."
|
6
|
+
end
|
3
7
|
|
4
8
|
module CarrierWave
|
5
9
|
module Storage
|
6
10
|
|
7
11
|
##
|
8
|
-
# Uploads things to Amazon S3 webservices
|
9
|
-
# CarrierWave to connect to Amazon S3, you'll need to specify an access key id, secret key
|
10
|
-
# and bucket
|
12
|
+
# Uploads things to Amazon S3 webservices using the "aws" library (aws gem).
|
13
|
+
# In order for CarrierWave to connect to Amazon S3, you'll need to specify an access key id, secret key
|
14
|
+
# and bucket
|
11
15
|
#
|
12
16
|
# CarrierWave.configure do |config|
|
13
17
|
# config.s3_access_key_id = "xxxxxx"
|
@@ -15,14 +19,21 @@ module CarrierWave
|
|
15
19
|
# config.s3_bucket = "my_bucket_name"
|
16
20
|
# end
|
17
21
|
#
|
18
|
-
#
|
22
|
+
# The AWS::S3Interface is used directly as opposed to the normal AWS::S3::Bucket et.al. classes.
|
23
|
+
# This gives much improved performance and avoids unnecessary requests.
|
24
|
+
#
|
25
|
+
# You can set the access policy for the uploaded files:
|
19
26
|
#
|
20
27
|
# CarrierWave.configure do |config|
|
21
|
-
# config.
|
28
|
+
# config.s3_access_policy = 'public-read'
|
22
29
|
# end
|
23
30
|
#
|
24
|
-
#
|
25
|
-
#
|
31
|
+
# The default is 'public-read'. For more options see:
|
32
|
+
#
|
33
|
+
# http://docs.amazonwebservices.com/AmazonS3/latest/RESTAccessPolicy.html#RESTCannedAccessPolicies
|
34
|
+
#
|
35
|
+
# For backwards compatability with the original aws-s3 library, if the old +config.s3_access+ is set it
|
36
|
+
# will be converted to the appropriate access policy:
|
26
37
|
#
|
27
38
|
# [:private] No one else has any access rights.
|
28
39
|
# [:public_read] The anonymous principal is granted READ access.
|
@@ -32,22 +43,6 @@ module CarrierWave
|
|
32
43
|
# [:authenticated_read] Any principal authenticated as a registered Amazon S3 user
|
33
44
|
# is granted READ access.
|
34
45
|
#
|
35
|
-
# The default is :public_read, it should work in most cases.
|
36
|
-
#
|
37
|
-
# You can assign HTTP headers to be used when S3 serves your files:
|
38
|
-
#
|
39
|
-
# CarrierWave.configure do |config|
|
40
|
-
# config.s3_headers = {"Content-Disposition" => "attachment; filename=foo.jpg;"}
|
41
|
-
# end
|
42
|
-
#
|
43
|
-
# You can also set the headers dynamically by overriding the s3_headers method:
|
44
|
-
#
|
45
|
-
# class MyUploader < CarrierWave::Uploader::Base
|
46
|
-
# def s3_headers
|
47
|
-
# { "Expires" => 1.year.from_how.httpdate }
|
48
|
-
# end
|
49
|
-
# end
|
50
|
-
#
|
51
46
|
# You can change the generated url to a cnamed domain by setting the cnamed config:
|
52
47
|
#
|
53
48
|
# CarrierWave.configure do |config|
|
@@ -61,15 +56,16 @@ module CarrierWave
|
|
61
56
|
#
|
62
57
|
# instead of
|
63
58
|
#
|
64
|
-
# http://s3.amazonaws.com/
|
59
|
+
# http://bucketname.domain.tld.s3.amazonaws.com/path/to/file
|
65
60
|
#
|
66
61
|
class S3 < Abstract
|
67
62
|
|
68
63
|
class File
|
69
64
|
|
70
|
-
def initialize(uploader, path)
|
65
|
+
def initialize(uploader, base, path)
|
71
66
|
@uploader = uploader
|
72
67
|
@path = path
|
68
|
+
@base = base
|
73
69
|
end
|
74
70
|
|
75
71
|
##
|
@@ -91,14 +87,16 @@ module CarrierWave
|
|
91
87
|
# [String] contents of the file
|
92
88
|
#
|
93
89
|
def read
|
94
|
-
|
90
|
+
result = connection.get(bucket, @path)
|
91
|
+
@headers = result[:headers]
|
92
|
+
result[:object]
|
95
93
|
end
|
96
94
|
|
97
95
|
##
|
98
96
|
# Remove the file from Amazon S3
|
99
97
|
#
|
100
98
|
def delete
|
101
|
-
|
99
|
+
connection.delete(bucket, @path)
|
102
100
|
end
|
103
101
|
|
104
102
|
##
|
@@ -109,43 +107,58 @@ module CarrierWave
|
|
109
107
|
# [String] file's url
|
110
108
|
#
|
111
109
|
def url
|
112
|
-
if @uploader.s3_cnamed
|
113
|
-
["http
|
110
|
+
if @uploader.s3_cnamed
|
111
|
+
["http://#{@uploader.s3_bucket}", @path].compact.join('/')
|
114
112
|
else
|
115
|
-
["http
|
113
|
+
["http://#{@uploader.s3_bucket}.s3.amazonaws.com", @path].compact.join('/')
|
116
114
|
end
|
117
115
|
end
|
118
116
|
|
119
|
-
def
|
120
|
-
|
117
|
+
def store(file)
|
118
|
+
content_type ||= file.content_type # this might cause problems if content type changes between read and upload (unlikely)
|
119
|
+
connection.put(bucket, @path, file.read,
|
120
|
+
{
|
121
|
+
'x-amz-acl' => access_policy,
|
122
|
+
'content-type' => content_type
|
123
|
+
}.merge(@uploader.s3_headers)
|
124
|
+
)
|
121
125
|
end
|
122
126
|
|
123
|
-
|
124
|
-
|
127
|
+
# The Amazon S3 Access policy ready to send in storage request headers.
|
128
|
+
def access_policy
|
129
|
+
return @access_policy unless @access_policy.blank?
|
130
|
+
if @uploader.s3_access_policy.blank?
|
131
|
+
if !@uploader.s3_access.blank?
|
132
|
+
@access_policy = @uploader.s3_access.to_s.gsub(/_/, '-')
|
133
|
+
else
|
134
|
+
@access_policy = 'public-read'
|
135
|
+
end
|
136
|
+
else
|
137
|
+
@access_policy = @uploader.s3_access_policy
|
138
|
+
end
|
125
139
|
end
|
126
140
|
|
127
141
|
def content_type
|
128
|
-
|
142
|
+
headers["content-type"]
|
129
143
|
end
|
130
144
|
|
131
|
-
def content_type=(
|
132
|
-
|
145
|
+
def content_type=(type)
|
146
|
+
headers["content-type"] = type
|
133
147
|
end
|
134
148
|
|
135
|
-
|
136
|
-
|
149
|
+
# Headers returned from file retrieval
|
150
|
+
def headers
|
151
|
+
@headers ||= {}
|
137
152
|
end
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
def store
|
144
|
-
s3_object.store
|
153
|
+
|
154
|
+
private
|
155
|
+
|
156
|
+
def bucket
|
157
|
+
@uploader.s3_bucket
|
145
158
|
end
|
146
159
|
|
147
|
-
def
|
148
|
-
@
|
160
|
+
def connection
|
161
|
+
@base.connection
|
149
162
|
end
|
150
163
|
|
151
164
|
end
|
@@ -155,42 +168,36 @@ module CarrierWave
|
|
155
168
|
#
|
156
169
|
# === Parameters
|
157
170
|
#
|
158
|
-
# [file (CarrierWave::
|
171
|
+
# [file (CarrierWave::SanitizedFile)] the file to store
|
159
172
|
#
|
160
173
|
# === Returns
|
161
174
|
#
|
162
|
-
# [CarrierWave::Storage::
|
175
|
+
# [CarrierWave::Storage::RightS3::File] the stored file
|
163
176
|
#
|
164
177
|
def store!(file)
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
AWS::S3::S3Object.store(uploader.store_path, file.read, uploader.s3_bucket, s3_options)
|
169
|
-
CarrierWave::Storage::S3::File.new(uploader, uploader.store_path)
|
178
|
+
f = CarrierWave::Storage::S3::File.new(uploader, self, uploader.store_path)
|
179
|
+
f.store(file)
|
180
|
+
f
|
170
181
|
end
|
171
182
|
|
172
183
|
# Do something to retrieve the file
|
173
184
|
#
|
174
|
-
# @param [CarrierWave::Uploader] uploader an uploader object
|
175
185
|
# @param [String] identifier uniquely identifies the file
|
176
186
|
#
|
177
187
|
# [identifier (String)] uniquely identifies the file
|
178
188
|
#
|
179
189
|
# === Returns
|
180
190
|
#
|
181
|
-
# [CarrierWave::Storage::
|
191
|
+
# [CarrierWave::Storage::RightS3::File] the stored file
|
182
192
|
#
|
183
193
|
def retrieve!(identifier)
|
184
|
-
|
185
|
-
CarrierWave::Storage::S3::File.new(uploader, uploader.store_path(identifier))
|
194
|
+
CarrierWave::Storage::S3::File.new(uploader, self, uploader.store_path(identifier))
|
186
195
|
end
|
187
196
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
:access_key_id => uploader.s3_access_key_id,
|
193
|
-
:secret_access_key => uploader.s3_secret_access_key
|
197
|
+
def connection
|
198
|
+
@connection ||= Aws::S3Interface.new(
|
199
|
+
uploader.s3_access_key_id, uploader.s3_secret_access_key,
|
200
|
+
:multi_thread => uploader.s3_multi_thread
|
194
201
|
)
|
195
202
|
end
|
196
203
|
|
@@ -61,9 +61,9 @@ module CarrierWave
|
|
61
61
|
def matches?(actual)
|
62
62
|
@actual = actual
|
63
63
|
# Satisfy expectation here. Return false or raise an error if it's not met.
|
64
|
-
|
65
|
-
@actual_width =
|
66
|
-
@actual_height =
|
64
|
+
image = ImageLoader.load_image(@actual.current_path)
|
65
|
+
@actual_width = image.width
|
66
|
+
@actual_height = image.height
|
67
67
|
@actual_width <= @width && @actual_height <= @height
|
68
68
|
end
|
69
69
|
|
@@ -74,10 +74,10 @@ module CarrierWave
|
|
74
74
|
def negative_failure_message
|
75
75
|
"expected #{@actual.current_path.inspect} to be larger than #{@width} by #{@height}, but it wasn't."
|
76
76
|
end
|
77
|
+
|
77
78
|
end
|
78
79
|
|
79
80
|
def be_no_larger_than(width, height)
|
80
|
-
load_rmagick
|
81
81
|
BeNoLargerThan.new(width, height)
|
82
82
|
end
|
83
83
|
|
@@ -89,9 +89,9 @@ module CarrierWave
|
|
89
89
|
def matches?(actual)
|
90
90
|
@actual = actual
|
91
91
|
# Satisfy expectation here. Return false or raise an error if it's not met.
|
92
|
-
|
93
|
-
@actual_width =
|
94
|
-
@actual_height =
|
92
|
+
image = ImageLoader.load_image(@actual.current_path)
|
93
|
+
@actual_width = image.width
|
94
|
+
@actual_height = image.height
|
95
95
|
@actual_width == @width && @actual_height == @height
|
96
96
|
end
|
97
97
|
|
@@ -102,27 +102,63 @@ module CarrierWave
|
|
102
102
|
def negative_failure_message
|
103
103
|
"expected #{@actual.current_path.inspect} not to have an exact size of #{@width} by #{@height}, but it did."
|
104
104
|
end
|
105
|
+
|
105
106
|
end
|
106
107
|
|
107
108
|
def have_dimensions(width, height)
|
108
|
-
load_rmagick
|
109
109
|
HaveDimensions.new(width, height)
|
110
110
|
end
|
111
111
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
112
|
+
class ImageLoader # :nodoc:
|
113
|
+
def self.load_image(filename)
|
114
|
+
if defined? MiniMagick
|
115
|
+
MiniMagickWrapper.new(filename)
|
116
|
+
else
|
117
|
+
unless defined? Magick
|
118
|
+
begin
|
119
|
+
require 'rmagick'
|
120
|
+
rescue LoadError
|
121
|
+
require 'RMagick'
|
122
|
+
rescue LoadError
|
123
|
+
puts "WARNING: Failed to require rmagick, image processing may fail!"
|
124
|
+
end
|
125
|
+
end
|
126
|
+
MagickWrapper.new(filename)
|
122
127
|
end
|
123
128
|
end
|
124
129
|
end
|
125
|
-
|
126
|
-
|
130
|
+
|
131
|
+
class MagickWrapper # :nodoc:
|
132
|
+
attr_reader :image
|
133
|
+
def width
|
134
|
+
image.columns
|
135
|
+
end
|
136
|
+
|
137
|
+
def height
|
138
|
+
image.rows
|
139
|
+
end
|
140
|
+
|
141
|
+
def initialize(filename)
|
142
|
+
@image = ::Magick::Image.read(filename).first
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
class MiniMagickWrapper # :nodoc:
|
147
|
+
attr_reader :image
|
148
|
+
def width
|
149
|
+
image[:width]
|
150
|
+
end
|
151
|
+
|
152
|
+
def height
|
153
|
+
image[:height]
|
154
|
+
end
|
155
|
+
|
156
|
+
def initialize(filename)
|
157
|
+
@image = ::MiniMagick::Image.from_file(filename)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
end # Matchers
|
127
162
|
end # Test
|
128
|
-
end # CarrierWave
|
163
|
+
end # CarrierWave
|
164
|
+
|
@@ -6,16 +6,18 @@ module CarrierWave
|
|
6
6
|
add_config :root
|
7
7
|
add_config :permissions
|
8
8
|
add_config :storage_engines
|
9
|
-
add_config :s3_access # for aws/s3
|
10
|
-
add_config :s3_access_policy # for
|
9
|
+
add_config :s3_access # for old aws/s3
|
10
|
+
add_config :s3_access_policy # for aws
|
11
11
|
add_config :s3_bucket
|
12
12
|
add_config :s3_access_key_id
|
13
13
|
add_config :s3_secret_access_key
|
14
14
|
add_config :s3_cnamed
|
15
15
|
add_config :s3_headers
|
16
|
+
add_config :s3_multi_thread
|
16
17
|
add_config :cloud_files_username
|
17
18
|
add_config :cloud_files_api_key
|
18
19
|
add_config :cloud_files_container
|
20
|
+
add_config :cloud_files_cdn_host
|
19
21
|
add_config :grid_fs_database
|
20
22
|
add_config :grid_fs_host
|
21
23
|
add_config :grid_fs_port
|
@@ -43,12 +45,13 @@ module CarrierWave
|
|
43
45
|
:cloud_files => "CarrierWave::Storage::CloudFiles"
|
44
46
|
}
|
45
47
|
config.storage = :file
|
46
|
-
config.s3_access = :public_read
|
47
|
-
config.s3_access_policy = 'public-read'
|
48
|
+
#config.s3_access = :public_read
|
49
|
+
#config.s3_access_policy = 'public-read' # Now set in library
|
48
50
|
config.s3_headers = {}
|
51
|
+
config.s3_multi_thread = true
|
49
52
|
config.grid_fs_database = 'carrierwave'
|
50
53
|
config.grid_fs_host = 'localhost'
|
51
|
-
config.
|
54
|
+
config.grid_fs_port = 27017
|
52
55
|
config.store_dir = 'uploads'
|
53
56
|
config.cache_dir = 'uploads/tmp'
|
54
57
|
config.ignore_integrity_errors = true
|
@@ -108,6 +108,16 @@ module CarrierWave
|
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
+
##
|
112
|
+
# Recreate versions and reprocess them. This can be used to recreate
|
113
|
+
# versions if their parameters somehow have changed.
|
114
|
+
#
|
115
|
+
def recreate_versions!
|
116
|
+
with_callbacks(:recreate_versions, file) do
|
117
|
+
versions.each { |name, v| v.store!(file) }
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
111
121
|
private
|
112
122
|
|
113
123
|
def full_filename(for_file)
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carrierwave
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 4
|
8
|
+
- 6
|
9
|
+
version: 0.4.6
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Jonas Nicklas
|
@@ -9,205 +14,26 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-07-20 00:00:00 +02:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
17
|
-
|
18
|
-
|
19
|
-
|
21
|
+
name: activesupport
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
20
25
|
requirements:
|
21
26
|
- - ">="
|
22
27
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
25
|
-
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.3.0
|
34
|
-
version:
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: newgem
|
37
|
-
type: :development
|
38
|
-
version_requirement:
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 1.5.2
|
44
|
-
version:
|
45
|
-
- !ruby/object:Gem::Dependency
|
46
|
-
name: rspec
|
47
|
-
type: :development
|
48
|
-
version_requirement:
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
51
|
-
- - ">="
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 1.2.8
|
54
|
-
version:
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: cucumber
|
57
|
-
type: :development
|
58
|
-
version_requirement:
|
59
|
-
version_requirements: !ruby/object:Gem::Requirement
|
60
|
-
requirements:
|
61
|
-
- - ">="
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: 0.3.96
|
64
|
-
version:
|
65
|
-
- !ruby/object:Gem::Dependency
|
66
|
-
name: activerecord
|
67
|
-
type: :development
|
68
|
-
version_requirement:
|
69
|
-
version_requirements: !ruby/object:Gem::Requirement
|
70
|
-
requirements:
|
71
|
-
- - ">="
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: 2.3.3
|
74
|
-
version:
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: sqlite3-ruby
|
77
|
-
type: :development
|
78
|
-
version_requirement:
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ">="
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: 1.2.5
|
84
|
-
version:
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: dm-core
|
87
|
-
type: :development
|
88
|
-
version_requirement:
|
89
|
-
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
requirements:
|
91
|
-
- - ">="
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: 0.9.11
|
94
|
-
version:
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
|
-
name: data_objects
|
97
|
-
type: :development
|
98
|
-
version_requirement:
|
99
|
-
version_requirements: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 0.9.12
|
104
|
-
version:
|
105
|
-
- !ruby/object:Gem::Dependency
|
106
|
-
name: do_sqlite3
|
107
|
-
type: :development
|
108
|
-
version_requirement:
|
109
|
-
version_requirements: !ruby/object:Gem::Requirement
|
110
|
-
requirements:
|
111
|
-
- - ">="
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
version: 0.9.11
|
114
|
-
version:
|
115
|
-
- !ruby/object:Gem::Dependency
|
116
|
-
name: sequel
|
117
|
-
type: :development
|
118
|
-
version_requirement:
|
119
|
-
version_requirements: !ruby/object:Gem::Requirement
|
120
|
-
requirements:
|
121
|
-
- - ">="
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version: 3.2.0
|
124
|
-
version:
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rmagick
|
127
|
-
type: :development
|
128
|
-
version_requirement:
|
129
|
-
version_requirements: !ruby/object:Gem::Requirement
|
130
|
-
requirements:
|
131
|
-
- - ">="
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
version: 2.10.0
|
134
|
-
version:
|
135
|
-
- !ruby/object:Gem::Dependency
|
136
|
-
name: mini_magick
|
137
|
-
type: :development
|
138
|
-
version_requirement:
|
139
|
-
version_requirements: !ruby/object:Gem::Requirement
|
140
|
-
requirements:
|
141
|
-
- - ">="
|
142
|
-
- !ruby/object:Gem::Version
|
143
|
-
version: 1.2.5
|
144
|
-
version:
|
145
|
-
- !ruby/object:Gem::Dependency
|
146
|
-
name: mongo_mapper
|
147
|
-
type: :development
|
148
|
-
version_requirement:
|
149
|
-
version_requirements: !ruby/object:Gem::Requirement
|
150
|
-
requirements:
|
151
|
-
- - ">="
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: 0.6.8
|
154
|
-
version:
|
155
|
-
- !ruby/object:Gem::Dependency
|
156
|
-
name: mongoid
|
157
|
-
type: :development
|
158
|
-
version_requirement:
|
159
|
-
version_requirements: !ruby/object:Gem::Requirement
|
160
|
-
requirements:
|
161
|
-
- - ">="
|
162
|
-
- !ruby/object:Gem::Version
|
163
|
-
version: 0.10.4
|
164
|
-
version:
|
165
|
-
- !ruby/object:Gem::Dependency
|
166
|
-
name: aws-s3
|
167
|
-
type: :development
|
168
|
-
version_requirement:
|
169
|
-
version_requirements: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: 0.6.2
|
174
|
-
version:
|
175
|
-
- !ruby/object:Gem::Dependency
|
176
|
-
name: timecop
|
177
|
-
type: :development
|
178
|
-
version_requirement:
|
179
|
-
version_requirements: !ruby/object:Gem::Requirement
|
180
|
-
requirements:
|
181
|
-
- - ">="
|
182
|
-
- !ruby/object:Gem::Version
|
183
|
-
version: 0.3.4
|
184
|
-
version:
|
185
|
-
- !ruby/object:Gem::Dependency
|
186
|
-
name: json
|
187
|
-
type: :development
|
188
|
-
version_requirement:
|
189
|
-
version_requirements: !ruby/object:Gem::Requirement
|
190
|
-
requirements:
|
191
|
-
- - ">="
|
192
|
-
- !ruby/object:Gem::Version
|
193
|
-
version: 1.1.9
|
194
|
-
version:
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: hoe
|
197
|
-
type: :development
|
198
|
-
version_requirement:
|
199
|
-
version_requirements: !ruby/object:Gem::Requirement
|
200
|
-
requirements:
|
201
|
-
- - ">="
|
202
|
-
- !ruby/object:Gem::Version
|
203
|
-
version: 2.5.0
|
204
|
-
version:
|
205
|
-
description: |-
|
206
|
-
* RDoc Documentation {available at Rubyforge}[http://carrierwave.rubyforge.org/rdoc].
|
207
|
-
* Source code {hosted at GitHub}[http://github.com/jnicklas/carrierwave]
|
208
|
-
* Please {report any issues}[http://github.com/jnicklas/carrierwave/issues] on GitHub
|
209
|
-
* Please direct any questions at the {mailing list}[http://groups.google.com/group/carrierwave]
|
210
|
-
* Check out the {example app}[http://github.com/jnicklas/carrierwave-example-app]
|
28
|
+
segments:
|
29
|
+
- 3
|
30
|
+
- 0
|
31
|
+
- 0
|
32
|
+
- beta4
|
33
|
+
version: 3.0.0.beta4
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
description: Upload files in your Ruby applications, map them to a range of ORMs, store them on different backends.
|
211
37
|
email:
|
212
38
|
- jonas.nicklas@gmail.com
|
213
39
|
executables: []
|
@@ -215,46 +41,8 @@ executables: []
|
|
215
41
|
extensions: []
|
216
42
|
|
217
43
|
extra_rdoc_files:
|
218
|
-
- History.txt
|
219
|
-
- Manifest.txt
|
220
|
-
- features/fixtures/bork.txt
|
221
|
-
- features/fixtures/monkey.txt
|
222
44
|
- README.rdoc
|
223
45
|
files:
|
224
|
-
- Generators
|
225
|
-
- History.txt
|
226
|
-
- Manifest.txt
|
227
|
-
- README.rdoc
|
228
|
-
- Rakefile
|
229
|
-
- carrierwave.gemspec
|
230
|
-
- cucumber.yml
|
231
|
-
- features/caching.feature
|
232
|
-
- features/download.feature
|
233
|
-
- features/file_storage.feature
|
234
|
-
- features/file_storage_overridden_filename.feature
|
235
|
-
- features/file_storage_overridden_store_dir.feature
|
236
|
-
- features/file_storage_reversing_processor.feature
|
237
|
-
- features/fixtures/bork.txt
|
238
|
-
- features/fixtures/monkey.txt
|
239
|
-
- features/grid_fs_storage.feature
|
240
|
-
- features/mount_activerecord.feature
|
241
|
-
- features/mount_datamapper.feature
|
242
|
-
- features/step_definitions/activerecord_steps.rb
|
243
|
-
- features/step_definitions/caching_steps.rb
|
244
|
-
- features/step_definitions/datamapper_steps.rb
|
245
|
-
- features/step_definitions/download_steps.rb
|
246
|
-
- features/step_definitions/file_steps.rb
|
247
|
-
- features/step_definitions/general_steps.rb
|
248
|
-
- features/step_definitions/mount_steps.rb
|
249
|
-
- features/step_definitions/store_steps.rb
|
250
|
-
- features/support/activerecord.rb
|
251
|
-
- features/support/datamapper.rb
|
252
|
-
- features/support/env.rb
|
253
|
-
- features/versions_basics.feature
|
254
|
-
- features/versions_nested_versions.feature
|
255
|
-
- features/versions_overridden_filename.feature
|
256
|
-
- features/versions_overriden_store_dir.feature
|
257
|
-
- lib/carrierwave.rb
|
258
46
|
- lib/carrierwave/compatibility/paperclip.rb
|
259
47
|
- lib/carrierwave/core_ext/blank.rb
|
260
48
|
- lib/carrierwave/core_ext/file.rb
|
@@ -264,7 +52,6 @@ files:
|
|
264
52
|
- lib/carrierwave/orm/activerecord.rb
|
265
53
|
- lib/carrierwave/orm/datamapper.rb
|
266
54
|
- lib/carrierwave/orm/mongoid.rb
|
267
|
-
- lib/carrierwave/orm/mongomapper.rb
|
268
55
|
- lib/carrierwave/orm/sequel.rb
|
269
56
|
- lib/carrierwave/processing/image_science.rb
|
270
57
|
- lib/carrierwave/processing/mini_magick.rb
|
@@ -277,7 +64,6 @@ files:
|
|
277
64
|
- lib/carrierwave/storage/right_s3.rb
|
278
65
|
- lib/carrierwave/storage/s3.rb
|
279
66
|
- lib/carrierwave/test/matchers.rb
|
280
|
-
- lib/carrierwave/uploader.rb
|
281
67
|
- lib/carrierwave/uploader/cache.rb
|
282
68
|
- lib/carrierwave/uploader/callbacks.rb
|
283
69
|
- lib/carrierwave/uploader/configuration.rb
|
@@ -291,47 +77,9 @@ files:
|
|
291
77
|
- lib/carrierwave/uploader/store.rb
|
292
78
|
- lib/carrierwave/uploader/url.rb
|
293
79
|
- lib/carrierwave/uploader/versions.rb
|
294
|
-
-
|
295
|
-
-
|
296
|
-
-
|
297
|
-
- rails_generators/uploader/uploader_generator.rb
|
298
|
-
- script/console
|
299
|
-
- script/destroy
|
300
|
-
- script/generate
|
301
|
-
- spec/compatibility/paperclip_spec.rb
|
302
|
-
- spec/fixtures/bork.txt
|
303
|
-
- spec/fixtures/landscape.jpg
|
304
|
-
- spec/fixtures/portrait.jpg
|
305
|
-
- spec/fixtures/test.jpeg
|
306
|
-
- spec/fixtures/test.jpg
|
307
|
-
- spec/mount_spec.rb
|
308
|
-
- spec/orm/activerecord_spec.rb
|
309
|
-
- spec/orm/datamapper_spec.rb
|
310
|
-
- spec/orm/mongoid_spec.rb
|
311
|
-
- spec/orm/mongomapper_spec.rb
|
312
|
-
- spec/orm/sequel_spec.rb
|
313
|
-
- spec/processing/image_science_spec.rb
|
314
|
-
- spec/processing/mini_magick_spec.rb
|
315
|
-
- spec/processing/rmagick_spec.rb
|
316
|
-
- spec/sanitized_file_spec.rb
|
317
|
-
- spec/spec_helper.rb
|
318
|
-
- spec/storage/cloudfiles_spec.rb
|
319
|
-
- spec/storage/grid_fs_spec.rb
|
320
|
-
- spec/storage/right_s3_spec.rb
|
321
|
-
- spec/storage/s3_spec.rb
|
322
|
-
- spec/uploader/cache_spec.rb
|
323
|
-
- spec/uploader/configuration_spec.rb
|
324
|
-
- spec/uploader/default_url_spec.rb
|
325
|
-
- spec/uploader/download_spec.rb
|
326
|
-
- spec/uploader/extension_whitelist_spec.rb
|
327
|
-
- spec/uploader/mountable_spec.rb
|
328
|
-
- spec/uploader/paths_spec.rb
|
329
|
-
- spec/uploader/processing_spec.rb
|
330
|
-
- spec/uploader/proxy_spec.rb
|
331
|
-
- spec/uploader/remove_spec.rb
|
332
|
-
- spec/uploader/store_spec.rb
|
333
|
-
- spec/uploader/url_spec.rb
|
334
|
-
- spec/uploader/versions_spec.rb
|
80
|
+
- lib/carrierwave/uploader.rb
|
81
|
+
- lib/carrierwave.rb
|
82
|
+
- README.rdoc
|
335
83
|
has_rdoc: true
|
336
84
|
homepage: http://carrierwave.rubyforge.org
|
337
85
|
licenses: []
|
@@ -343,23 +91,27 @@ rdoc_options:
|
|
343
91
|
require_paths:
|
344
92
|
- lib
|
345
93
|
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
346
95
|
requirements:
|
347
96
|
- - ">="
|
348
97
|
- !ruby/object:Gem::Version
|
98
|
+
segments:
|
99
|
+
- 0
|
349
100
|
version: "0"
|
350
|
-
version:
|
351
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
none: false
|
352
103
|
requirements:
|
353
104
|
- - ">="
|
354
105
|
- !ruby/object:Gem::Version
|
106
|
+
segments:
|
107
|
+
- 0
|
355
108
|
version: "0"
|
356
|
-
version:
|
357
109
|
requirements: []
|
358
110
|
|
359
111
|
rubyforge_project: carrierwave
|
360
|
-
rubygems_version: 1.3.
|
112
|
+
rubygems_version: 1.3.7
|
361
113
|
signing_key:
|
362
114
|
specification_version: 3
|
363
|
-
summary:
|
115
|
+
summary: Ruby file upload library
|
364
116
|
test_files: []
|
365
117
|
|