carrierwave 0.2.4 → 0.3.0
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/Rakefile +3 -1
- data/lib/carrierwave/mount.rb +34 -5
- data/lib/carrierwave/orm/activerecord.rb +3 -4
- data/lib/carrierwave/orm/datamapper.rb +9 -1
- data/lib/carrierwave/orm/sequel.rb +5 -1
- data/lib/carrierwave/processing/rmagick.rb +31 -0
- data/lib/carrierwave/storage/abstract.rb +11 -91
- data/lib/carrierwave/storage/file.rb +2 -8
- data/lib/carrierwave/storage/s3.rb +93 -81
- data/lib/carrierwave/uploader/proxy.rb +1 -1
- data/lib/carrierwave/uploader/store.rb +3 -3
- data/spec/mount_spec.rb +33 -28
- data/spec/orm/datamapper_spec.rb +34 -16
- data/spec/orm/sequel_spec.rb +15 -21
- data/spec/spec_helper.rb +1 -1
- data/spec/uploader/remove_spec.rb +4 -1
- data/spec/uploader/store_spec.rb +22 -10
- data/spec/uploader/url_spec.rb +2 -2
- data/spec/uploader/versions_spec.rb +44 -12
- metadata +2 -3
- data/spec/test.log +0 -172
data/Rakefile
CHANGED
@@ -9,7 +9,7 @@ require 'spec/rake/spectask'
|
|
9
9
|
require 'cucumber/rake/task'
|
10
10
|
|
11
11
|
NAME = "carrierwave"
|
12
|
-
GEM_VERSION = "0.
|
12
|
+
GEM_VERSION = "0.3.0"
|
13
13
|
AUTHOR = "Jonas Nicklas"
|
14
14
|
EMAIL = "jonas.nicklas@gmail.com"
|
15
15
|
HOMEPAGE = "http://www.example.com"
|
@@ -102,3 +102,5 @@ end
|
|
102
102
|
|
103
103
|
desc 'Default: run unit tests.'
|
104
104
|
task :default => 'spec'
|
105
|
+
|
106
|
+
task :superspec => [:spec, :features]
|
data/lib/carrierwave/mount.rb
CHANGED
@@ -75,6 +75,8 @@ module CarrierWave
|
|
75
75
|
# [image_integrity_error] Returns an error object if the last file to be assigned caused an integrty error
|
76
76
|
# [image_processing_error] Returns an error object if the last file to be assigned caused a processing error
|
77
77
|
#
|
78
|
+
# [write_image_identifier] Uses the write_uploader method to set the identifier.
|
79
|
+
#
|
78
80
|
# === Parameters
|
79
81
|
#
|
80
82
|
# [column (Symbol)] the attribute to mount this uploader on
|
@@ -125,7 +127,19 @@ module CarrierWave
|
|
125
127
|
|
126
128
|
include CarrierWave::Mount::Extension
|
127
129
|
|
130
|
+
# Make sure to write over accessors directly defined on the class.
|
131
|
+
# Simply super to the included module below.
|
128
132
|
class_eval <<-RUBY, __FILE__, __LINE__+1
|
133
|
+
def #{column}; super; end
|
134
|
+
def #{column}=(new_file); super; end
|
135
|
+
RUBY
|
136
|
+
|
137
|
+
# Mixing this in as a Module instead of class_evaling directly, so we
|
138
|
+
# can maintain the ability to super to any of these methods from within
|
139
|
+
# the class.
|
140
|
+
mod = Module.new
|
141
|
+
include mod
|
142
|
+
mod.class_eval <<-RUBY, __FILE__, __LINE__+1
|
129
143
|
|
130
144
|
def #{column}
|
131
145
|
_mounter(:#{column}).uploader
|
@@ -186,6 +200,11 @@ module CarrierWave
|
|
186
200
|
def #{column}_processing_error
|
187
201
|
_mounter(:#{column}).processing_error
|
188
202
|
end
|
203
|
+
|
204
|
+
def write_#{column}_identifier
|
205
|
+
_mounter(:#{column}).write_identifier
|
206
|
+
end
|
207
|
+
|
189
208
|
RUBY
|
190
209
|
|
191
210
|
end
|
@@ -225,11 +244,23 @@ module CarrierWave
|
|
225
244
|
@options = record.class.uploader_options[column]
|
226
245
|
end
|
227
246
|
|
247
|
+
def write_identifier
|
248
|
+
if remove?
|
249
|
+
record.write_uploader(serialization_column, '')
|
250
|
+
else
|
251
|
+
record.write_uploader(serialization_column, uploader.identifier)
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
def identifier
|
256
|
+
record.read_uploader(serialization_column)
|
257
|
+
end
|
258
|
+
|
228
259
|
def uploader
|
229
260
|
@uploader ||= record.class.uploaders[column].new(record, column)
|
230
|
-
|
231
|
-
|
232
|
-
@uploader.retrieve_from_store!(identifier)
|
261
|
+
|
262
|
+
if @uploader.blank? and not identifier.blank?
|
263
|
+
@uploader.retrieve_from_store!(identifier)
|
233
264
|
end
|
234
265
|
return @uploader
|
235
266
|
end
|
@@ -259,10 +290,8 @@ module CarrierWave
|
|
259
290
|
unless uploader.blank?
|
260
291
|
if remove?
|
261
292
|
uploader.remove!
|
262
|
-
record.write_uploader(serialization_column, '')
|
263
293
|
else
|
264
294
|
uploader.store!
|
265
|
-
record.write_uploader(serialization_column, uploader.identifier)
|
266
295
|
end
|
267
296
|
end
|
268
297
|
end
|
@@ -17,13 +17,12 @@ module CarrierWave
|
|
17
17
|
validates_integrity_of column if uploader_options[column.to_sym][:validate_integrity]
|
18
18
|
validates_processing_of column if uploader_options[column.to_sym][:validate_processing]
|
19
19
|
|
20
|
-
|
20
|
+
after_save do |record|
|
21
21
|
record.send("store_#{column}!")
|
22
|
-
record.save
|
23
22
|
end
|
24
23
|
|
25
|
-
|
26
|
-
record.send("
|
24
|
+
before_save do |record|
|
25
|
+
record.send("write_#{column}_identifier")
|
27
26
|
end
|
28
27
|
|
29
28
|
after_destroy do |record|
|
@@ -14,9 +14,17 @@ module CarrierWave
|
|
14
14
|
alias_method :read_uploader, :attribute_get
|
15
15
|
alias_method :write_uploader, :attribute_set
|
16
16
|
|
17
|
-
|
17
|
+
after :save do
|
18
18
|
send("store_#{column}!")
|
19
19
|
end
|
20
|
+
|
21
|
+
before :save do
|
22
|
+
send("write_#{column}_identifier")
|
23
|
+
end
|
24
|
+
|
25
|
+
after :destroy do
|
26
|
+
send("remove_#{column}!")
|
27
|
+
end
|
20
28
|
end
|
21
29
|
|
22
30
|
end # DataMapper
|
@@ -11,10 +11,14 @@ module CarrierWave
|
|
11
11
|
alias_method :read_uploader, :[]
|
12
12
|
alias_method :write_uploader, :[]=
|
13
13
|
|
14
|
-
|
14
|
+
after_save do
|
15
15
|
send("store_#{column}!")
|
16
16
|
end
|
17
17
|
|
18
|
+
before_save do
|
19
|
+
send("write_#{column}_identifier")
|
20
|
+
end
|
21
|
+
|
18
22
|
before_destroy do
|
19
23
|
send("remove_#{column}!")
|
20
24
|
end
|
@@ -63,6 +63,37 @@ module CarrierWave
|
|
63
63
|
#
|
64
64
|
module RMagick
|
65
65
|
|
66
|
+
def self.included(base)
|
67
|
+
super
|
68
|
+
base.extend(ClassMethods)
|
69
|
+
end
|
70
|
+
|
71
|
+
module ClassMethods
|
72
|
+
def convert(format)
|
73
|
+
process :resize_to_limit => format
|
74
|
+
end
|
75
|
+
|
76
|
+
def resize_to_limit(width, height)
|
77
|
+
process :resize_to_limit => [width, height]
|
78
|
+
end
|
79
|
+
|
80
|
+
def resize_to_fit(width, height)
|
81
|
+
process :resize_to_fit => [width, height]
|
82
|
+
end
|
83
|
+
|
84
|
+
def resize_to_fill(width, height)
|
85
|
+
process :resize_to_fill => [width, height]
|
86
|
+
end
|
87
|
+
|
88
|
+
def resize_and_pad(width, height)
|
89
|
+
process :resize_to_fit => [width, height]
|
90
|
+
end
|
91
|
+
|
92
|
+
def resize_and_pad(width, height, background=:transparent, gravity=::Magick::CenterGravity)
|
93
|
+
process :resize_and_pad => [width, height, background, gravity]
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
66
97
|
##
|
67
98
|
# Changes the image encoding format to the given format
|
68
99
|
#
|
@@ -3,107 +3,27 @@ module CarrierWave
|
|
3
3
|
|
4
4
|
##
|
5
5
|
# This file serves mostly as a specification for Storage engines. There is no requirement
|
6
|
-
# that storage engines must be a subclass of this class.
|
7
|
-
# conform to the following interface:
|
8
|
-
#
|
9
|
-
# The storage engine must respond to store!, taking an uploader object and a
|
10
|
-
# CarrierWave::SanitizedFile as parameters. This method should do something to store
|
11
|
-
# the given file, and then return an object.
|
12
|
-
#
|
13
|
-
# The storage engine must respond to retrieve!, taking an uploader object and an identifier
|
14
|
-
# as parameters. This method should do retrieve and then return an object.
|
15
|
-
#
|
16
|
-
# The objects returned by store! and retrieve! both *must* respond to +identifier+, taking
|
17
|
-
# no arguments. Identifier is a string that uniquely identifies this file and can be used
|
18
|
-
# to retrieve it later.
|
6
|
+
# that storage engines must be a subclass of this class.
|
19
7
|
#
|
20
8
|
class Abstract
|
21
9
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
# [uploader (CarrierWave::Uploader)] an uploader object
|
27
|
-
# [identifier (String)] uniquely identifies the file
|
28
|
-
#
|
29
|
-
# === Returns
|
30
|
-
#
|
31
|
-
# [bool] True if file was remove or false
|
32
|
-
#
|
33
|
-
def self.destroy!(uploader, identifier)
|
34
|
-
false
|
10
|
+
attr_reader :uploader
|
11
|
+
|
12
|
+
def initialize(uploader)
|
13
|
+
@uploader = uploader
|
35
14
|
end
|
36
15
|
|
37
|
-
##
|
38
|
-
# Do setup specific for this storage engine
|
39
|
-
#
|
40
16
|
def self.setup!; end
|
41
|
-
|
42
|
-
##
|
43
|
-
# Do something to store the file
|
44
|
-
#
|
45
|
-
# === Parameters
|
46
|
-
#
|
47
|
-
# [uploader (CarrierWave::Uploader)] an uploader object
|
48
|
-
# [file (CarrierWave::SanitizedFile)] the file to store
|
49
|
-
#
|
50
|
-
# === Returns
|
51
|
-
#
|
52
|
-
# [#identifier] an object
|
53
|
-
#
|
54
|
-
def self.store!(uploader, file)
|
55
|
-
self.new
|
56
|
-
end
|
57
17
|
|
58
|
-
|
59
|
-
|
60
|
-
# === Parameters
|
61
|
-
#
|
62
|
-
# [uploader (CarrierWave::Uploader)] an uploader object
|
63
|
-
# [identifier (String)] uniquely identifies the file
|
64
|
-
#
|
65
|
-
# === Returns
|
66
|
-
#
|
67
|
-
# [#identifier] an object
|
68
|
-
#
|
69
|
-
def self.retrieve!(uploader, identifier)
|
70
|
-
self.new
|
18
|
+
def identifier
|
19
|
+
uploader.filename
|
71
20
|
end
|
72
21
|
|
73
|
-
|
74
|
-
|
75
|
-
# the same storage engine later on.
|
76
|
-
#
|
77
|
-
# This is OPTIONAL
|
78
|
-
#
|
79
|
-
# === Returns
|
80
|
-
#
|
81
|
-
# [String] path to the file
|
82
|
-
#
|
83
|
-
def identifier; end
|
84
|
-
|
85
|
-
##
|
86
|
-
# Should return the url where the file is publically accessible. If this is not set, then
|
87
|
-
# it is assumed that the url is the path relative to the public directory.
|
88
|
-
#
|
89
|
-
# This is OPTIONAL
|
90
|
-
#
|
91
|
-
# === Returns
|
92
|
-
#
|
93
|
-
# [String] file's url
|
94
|
-
#
|
95
|
-
def url; end
|
22
|
+
def store!
|
23
|
+
end
|
96
24
|
|
97
|
-
|
98
|
-
|
99
|
-
#
|
100
|
-
# This is OPTIONAL
|
101
|
-
#
|
102
|
-
# === Returns
|
103
|
-
#
|
104
|
-
# [String] path to the file
|
105
|
-
#
|
106
|
-
def path; end
|
25
|
+
def retrieve!
|
26
|
+
end
|
107
27
|
|
108
28
|
end # Abstract
|
109
29
|
end # Storage
|
@@ -8,23 +8,18 @@ module CarrierWave
|
|
8
8
|
#
|
9
9
|
class File < Abstract
|
10
10
|
|
11
|
-
def initialize(uploader)
|
12
|
-
@uploader = uploader
|
13
|
-
end
|
14
|
-
|
15
11
|
##
|
16
12
|
# Move the file to the uploader's store path.
|
17
13
|
#
|
18
14
|
# === Parameters
|
19
15
|
#
|
20
|
-
# [uploader (CarrierWave::Uploader)] an uploader object
|
21
16
|
# [file (CarrierWave::SanitizedFile)] the file to store
|
22
17
|
#
|
23
18
|
# === Returns
|
24
19
|
#
|
25
20
|
# [CarrierWave::SanitizedFile] a sanitized file
|
26
21
|
#
|
27
|
-
def
|
22
|
+
def store!(file)
|
28
23
|
path = ::File.join(uploader.store_path)
|
29
24
|
path = ::File.expand_path(path, uploader.public)
|
30
25
|
file.move_to(path, CarrierWave.config[:permissions])
|
@@ -36,14 +31,13 @@ module CarrierWave
|
|
36
31
|
#
|
37
32
|
# === Parameters
|
38
33
|
#
|
39
|
-
# [uploader (CarrierWave::Uploader)] an uploader object
|
40
34
|
# [identifier (String)] the filename of the file
|
41
35
|
#
|
42
36
|
# === Returns
|
43
37
|
#
|
44
38
|
# [CarrierWave::SanitizedFile] a sanitized file
|
45
39
|
#
|
46
|
-
def
|
40
|
+
def retrieve!(identifier)
|
47
41
|
path = ::File.join(uploader.store_path(identifier))
|
48
42
|
path = ::File.expand_path(path, uploader.public)
|
49
43
|
CarrierWave::SanitizedFile.new(path)
|
@@ -28,32 +28,86 @@ module CarrierWave
|
|
28
28
|
# The default is :public_read, it should work in most cases.
|
29
29
|
#
|
30
30
|
class S3 < Abstract
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
31
|
+
|
32
|
+
class File
|
33
|
+
|
34
|
+
def initialize(path, identifier)
|
35
|
+
@path = path
|
36
|
+
@identifier = identifier
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# Returns the current path of the file on S3
|
41
|
+
#
|
42
|
+
# === Returns
|
43
|
+
#
|
44
|
+
# [String] A path
|
45
|
+
#
|
46
|
+
def path
|
47
|
+
@path
|
48
|
+
end
|
49
|
+
|
50
|
+
##
|
51
|
+
# Returns the filename on S3
|
52
|
+
#
|
53
|
+
# === Returns
|
54
|
+
#
|
55
|
+
# [String] path to the file
|
56
|
+
#
|
57
|
+
def identifier
|
58
|
+
@identifier
|
59
|
+
end
|
60
|
+
|
61
|
+
##
|
62
|
+
# Reads the contents of the file from S3
|
63
|
+
#
|
64
|
+
# === Returns
|
65
|
+
#
|
66
|
+
# [String] contents of the file
|
67
|
+
#
|
68
|
+
def read
|
69
|
+
AWS::S3::S3Object.value @path, bucket
|
70
|
+
end
|
71
|
+
|
72
|
+
##
|
73
|
+
# Remove the file from Amazon S3
|
74
|
+
#
|
75
|
+
def delete
|
76
|
+
AWS::S3::S3Object.delete @path, bucket
|
77
|
+
end
|
78
|
+
|
79
|
+
##
|
80
|
+
# Returns the url on Amazon's S3 service
|
81
|
+
#
|
82
|
+
# === Returns
|
83
|
+
#
|
84
|
+
# [String] file's url
|
85
|
+
#
|
86
|
+
def url
|
87
|
+
["http://s3.amazonaws.com", bucket, @path].compact.join('/')
|
88
|
+
end
|
89
|
+
|
90
|
+
private
|
91
|
+
|
92
|
+
def bucket
|
93
|
+
CarrierWave::Storage::S3.bucket
|
94
|
+
end
|
95
|
+
|
96
|
+
def access
|
97
|
+
CarrierWave::Storage::S3.access
|
98
|
+
end
|
99
|
+
|
46
100
|
end
|
47
|
-
|
101
|
+
|
48
102
|
##
|
49
103
|
# === Returns
|
50
104
|
#
|
51
105
|
# [String] the bucket set in the config options
|
52
|
-
#
|
106
|
+
#
|
53
107
|
def self.bucket
|
54
108
|
CarrierWave.config[:s3][:bucket]
|
55
109
|
end
|
56
|
-
|
110
|
+
|
57
111
|
##
|
58
112
|
# === Returns
|
59
113
|
#
|
@@ -62,91 +116,49 @@ module CarrierWave
|
|
62
116
|
def self.access
|
63
117
|
CarrierWave.config[:s3][:access]
|
64
118
|
end
|
65
|
-
|
119
|
+
|
120
|
+
##
|
121
|
+
# Connect to Amazon S3
|
122
|
+
#
|
123
|
+
def self.setup!
|
124
|
+
require 'aws/s3'
|
125
|
+
AWS::S3::Base.establish_connection!(
|
126
|
+
:access_key_id => CarrierWave.config[:s3][:access_key_id],
|
127
|
+
:secret_access_key => CarrierWave.config[:s3][:secret_access_key]
|
128
|
+
)
|
129
|
+
end
|
130
|
+
|
66
131
|
##
|
67
132
|
# Store the file on S3
|
68
133
|
#
|
69
134
|
# === Parameters
|
70
135
|
#
|
71
|
-
# [
|
72
|
-
# [file (CarrierWave::SanitizedFile)] the file to store
|
136
|
+
# [file (CarrierWave::Storage::S3::File)] the file to store
|
73
137
|
#
|
74
138
|
# === Returns
|
75
139
|
#
|
76
140
|
# [CarrierWave::Storage::S3] the stored file
|
77
141
|
#
|
78
|
-
def
|
79
|
-
AWS::S3::S3Object.store(::File.join(uploader.store_path), file.read, bucket, :access => access)
|
80
|
-
|
142
|
+
def store!(file)
|
143
|
+
AWS::S3::S3Object.store(::File.join(uploader.store_path), file.read, self.class.bucket, :access => self.class.access)
|
144
|
+
CarrierWave::Storage::S3::File.new(uploader.store_dir, uploader.filename)
|
81
145
|
end
|
82
|
-
|
146
|
+
|
83
147
|
# Do something to retrieve the file
|
84
148
|
#
|
85
149
|
# @param [CarrierWave::Uploader] uploader an uploader object
|
86
150
|
# @param [String] identifier uniquely identifies the file
|
87
151
|
#
|
88
|
-
# [uploader (CarrierWave::Uploader)] an uploader object
|
89
152
|
# [identifier (String)] uniquely identifies the file
|
90
153
|
#
|
91
154
|
# === Returns
|
92
155
|
#
|
93
|
-
# [CarrierWave::Storage::S3] the stored file
|
94
|
-
#
|
95
|
-
def self.retrieve!(uploader, identifier)
|
96
|
-
self.new(uploader.store_path(identifier), identifier)
|
97
|
-
end
|
98
|
-
|
99
|
-
##
|
100
|
-
# Returns the current path of the file on S3
|
101
|
-
#
|
102
|
-
# === Returns
|
103
|
-
#
|
104
|
-
# [String] A path
|
105
|
-
#
|
106
|
-
def path
|
107
|
-
@path
|
108
|
-
end
|
109
|
-
|
110
|
-
##
|
111
|
-
# Returns the filename on S3
|
112
|
-
#
|
113
|
-
# === Returns
|
114
|
-
#
|
115
|
-
# [String] path to the file
|
156
|
+
# [CarrierWave::Storage::S3::File] the stored file
|
116
157
|
#
|
117
|
-
def identifier
|
118
|
-
|
158
|
+
def retrieve!(identifier)
|
159
|
+
CarrierWave::Storage::S3::File.new(uploader.store_path(identifier), identifier)
|
119
160
|
end
|
120
161
|
|
121
|
-
##
|
122
|
-
# Reads the contents of the file from S3
|
123
|
-
#
|
124
|
-
# === Returns
|
125
|
-
#
|
126
|
-
# [String] contents of the file
|
127
|
-
#
|
128
|
-
def read
|
129
|
-
AWS::S3::S3Object.value @path, self.class.bucket
|
130
|
-
end
|
131
|
-
|
132
|
-
##
|
133
|
-
# Remove the file from Amazon S3
|
134
|
-
#
|
135
|
-
def delete
|
136
|
-
AWS::S3::S3Object.delete @path, self.class.bucket
|
137
|
-
end
|
138
|
-
|
139
|
-
##
|
140
|
-
# Returns the url on Amazon's S3 service
|
141
|
-
#
|
142
|
-
# === Returns
|
143
|
-
#
|
144
|
-
# [String] file's url
|
145
|
-
#
|
146
|
-
def url
|
147
|
-
["http://s3.amazonaws.com", self.class.bucket, @path].compact.join('/')
|
148
|
-
end
|
149
|
-
|
150
162
|
end # S3
|
151
163
|
end # Storage
|
152
|
-
end # CarrierWave
|
164
|
+
end # CarrierWave
|
@@ -120,7 +120,7 @@ module CarrierWave
|
|
120
120
|
cache!(new_file) if new_file
|
121
121
|
if @file and @cache_id
|
122
122
|
with_callbacks(:store, new_file) do
|
123
|
-
@file = storage.store!(
|
123
|
+
@file = storage.store!(@file)
|
124
124
|
@cache_id = nil
|
125
125
|
end
|
126
126
|
end
|
@@ -135,7 +135,7 @@ module CarrierWave
|
|
135
135
|
#
|
136
136
|
def retrieve_from_store!(identifier)
|
137
137
|
with_callbacks(:retrieve_from_store, identifier) do
|
138
|
-
@file = storage.retrieve!(
|
138
|
+
@file = storage.retrieve!(identifier)
|
139
139
|
end
|
140
140
|
end
|
141
141
|
|
@@ -146,7 +146,7 @@ module CarrierWave
|
|
146
146
|
end
|
147
147
|
|
148
148
|
def storage
|
149
|
-
self.class.storage
|
149
|
+
@storage ||= self.class.storage.new(self)
|
150
150
|
end
|
151
151
|
|
152
152
|
end # Store
|
data/spec/mount_spec.rb
CHANGED
@@ -19,21 +19,19 @@ describe CarrierWave::Mount do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should maintain the ability to super" do
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
super
|
26
|
-
end
|
27
|
-
|
28
|
-
def image=(val)
|
29
|
-
super
|
30
|
-
end
|
22
|
+
@class.class_eval do
|
23
|
+
def image_uploader
|
24
|
+
super
|
31
25
|
end
|
32
26
|
|
33
|
-
|
34
|
-
|
35
|
-
|
27
|
+
def image=(val)
|
28
|
+
super
|
29
|
+
end
|
36
30
|
end
|
31
|
+
|
32
|
+
@instance.image_uploader.should be_an_instance_of(@uploader)
|
33
|
+
@instance.image = stub_file('test.jpg')
|
34
|
+
@instance.image.should be_an_instance_of(@uploader)
|
37
35
|
end
|
38
36
|
|
39
37
|
describe '#image_uploader' do
|
@@ -74,12 +72,12 @@ describe CarrierWave::Mount do
|
|
74
72
|
end
|
75
73
|
|
76
74
|
it "should retrieve a file from the storage if a value is stored in the database" do
|
77
|
-
@instance.should_receive(:read_uploader).with(:image).and_return('test.jpg')
|
75
|
+
@instance.should_receive(:read_uploader).with(:image).at_least(:once).and_return('test.jpg')
|
78
76
|
@instance.image.should be_an_instance_of(@uploader)
|
79
77
|
end
|
80
78
|
|
81
79
|
it "should set the path to the store dir" do
|
82
|
-
@instance.should_receive(:read_uploader).with(:image).and_return('test.jpg')
|
80
|
+
@instance.should_receive(:read_uploader).with(:image).at_least(:once).and_return('test.jpg')
|
83
81
|
@instance.image.current_path.should == public_path('uploads/test.jpg')
|
84
82
|
end
|
85
83
|
|
@@ -161,7 +159,7 @@ describe CarrierWave::Mount do
|
|
161
159
|
end
|
162
160
|
|
163
161
|
it "should get the url from a retrieved file" do
|
164
|
-
@instance.should_receive(:read_uploader).with(:image).and_return('test.jpg')
|
162
|
+
@instance.should_receive(:read_uploader).at_least(:once).with(:image).and_return('test.jpg')
|
165
163
|
@instance.image_url.should == '/uploads/test.jpg'
|
166
164
|
end
|
167
165
|
|
@@ -250,14 +248,7 @@ describe CarrierWave::Mount do
|
|
250
248
|
@instance.image.current_path.should == public_path('uploads/test.jpg')
|
251
249
|
end
|
252
250
|
|
253
|
-
it "write to the column" do
|
254
|
-
@instance.should_receive(:write_uploader).with(:image, "test.jpg")
|
255
|
-
@instance.image = stub_file('test.jpg')
|
256
|
-
@instance.store_image!
|
257
|
-
end
|
258
|
-
|
259
251
|
it "should remove an uploaded file when remove_image? returns true" do
|
260
|
-
@instance.should_receive(:write_uploader).with(:image, "")
|
261
252
|
@instance.image = stub_file('test.jpg')
|
262
253
|
path = @instance.image.current_path
|
263
254
|
@instance.remove_image = true
|
@@ -371,6 +362,22 @@ describe CarrierWave::Mount do
|
|
371
362
|
end
|
372
363
|
end
|
373
364
|
|
365
|
+
describe '#write_image_identifier' do
|
366
|
+
it "should write to the column" do
|
367
|
+
@instance.should_receive(:write_uploader).with(:image, "test.jpg")
|
368
|
+
@instance.image = stub_file('test.jpg')
|
369
|
+
@instance.write_image_identifier
|
370
|
+
end
|
371
|
+
|
372
|
+
it "should remove from the column when remove_image is true" do
|
373
|
+
@instance.image = stub_file('test.jpg')
|
374
|
+
@instance.store_image!
|
375
|
+
@instance.remove_image = true
|
376
|
+
@instance.should_receive(:write_uploader).with(:image, "")
|
377
|
+
@instance.write_image_identifier
|
378
|
+
end
|
379
|
+
end
|
380
|
+
|
374
381
|
end
|
375
382
|
|
376
383
|
describe '#mount_uploader with a block' do
|
@@ -473,20 +480,18 @@ describe CarrierWave::Mount do
|
|
473
480
|
end
|
474
481
|
|
475
482
|
describe '#image' do
|
476
|
-
|
477
483
|
it "should retrieve a file from the storage if a value is stored in the database" do
|
478
|
-
@instance.should_receive(:read_uploader).with(:monkey).twice.and_return('test.jpg')
|
484
|
+
@instance.should_receive(:read_uploader).at_least(:once).with(:monkey).twice.and_return('test.jpg')
|
479
485
|
@instance.image.should be_an_instance_of(@uploader)
|
480
486
|
@instance.image.current_path.should == public_path('uploads/test.jpg')
|
481
487
|
end
|
482
|
-
|
483
488
|
end
|
484
489
|
|
485
|
-
describe '#
|
490
|
+
describe '#write_image_identifier' do
|
486
491
|
it "should write to the given column" do
|
487
492
|
@instance.should_receive(:write_uploader).with(:monkey, "test.jpg")
|
488
493
|
@instance.image = stub_file('test.jpg')
|
489
|
-
@instance.
|
494
|
+
@instance.write_image_identifier
|
490
495
|
end
|
491
496
|
|
492
497
|
it "should remove from the given column when remove_image is true" do
|
@@ -494,7 +499,7 @@ describe CarrierWave::Mount do
|
|
494
499
|
@instance.store_image!
|
495
500
|
@instance.remove_image = true
|
496
501
|
@instance.should_receive(:write_uploader).with(:monkey, "")
|
497
|
-
@instance.
|
502
|
+
@instance.write_image_identifier
|
498
503
|
end
|
499
504
|
end
|
500
505
|
end
|
data/spec/orm/datamapper_spec.rb
CHANGED
@@ -101,14 +101,14 @@ describe CarrierWave::DataMapper do
|
|
101
101
|
@event.image.current_path.should == public_path('uploads/test.jpeg')
|
102
102
|
end
|
103
103
|
|
104
|
-
it "should do nothing when a validation fails" do
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
end
|
104
|
+
# it "should do nothing when a validation fails" do
|
105
|
+
# pending "how do we test with and without dm-validations?"
|
106
|
+
# @class.validate { |r| r.errors.add :textfile, "FAIL!" }
|
107
|
+
# @event.image = stub_file('test.jpeg')
|
108
|
+
# @event.save
|
109
|
+
# @event.image.should be_an_instance_of(@uploader)
|
110
|
+
# @event.image.current_path.should =~ /^#{public_path('uploads/tmp')}/
|
111
|
+
# end
|
112
112
|
|
113
113
|
it "should assign the filename to the database" do
|
114
114
|
@event.image = stub_file('test.jpeg')
|
@@ -117,14 +117,14 @@ describe CarrierWave::DataMapper do
|
|
117
117
|
@event.attribute_get(:image).should == 'test.jpeg'
|
118
118
|
end
|
119
119
|
|
120
|
-
it "should assign the filename before validation" do
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
end
|
120
|
+
# it "should assign the filename before validation" do
|
121
|
+
# pending "how do we test with and without dm-validations?"
|
122
|
+
# @class.validate { |r| r.errors.add_to_base "FAIL!" if r[:image].nil? }
|
123
|
+
# @event.image = stub_file('test.jpeg')
|
124
|
+
# @event.save
|
125
|
+
# @event.reload
|
126
|
+
# @event.attribute_get(:image).should == 'test.jpeg'
|
127
|
+
# end
|
128
128
|
|
129
129
|
it "should remove the image if remove_image? returns true" do
|
130
130
|
@event.image = stub_file('test.jpeg')
|
@@ -137,5 +137,23 @@ describe CarrierWave::DataMapper do
|
|
137
137
|
end
|
138
138
|
|
139
139
|
end
|
140
|
+
|
141
|
+
describe '#destroy' do
|
142
|
+
|
143
|
+
it "should do nothing when no file has been assigned" do
|
144
|
+
@event.destroy
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should remove the file from the filesystem" do
|
148
|
+
@event.image = stub_file('test.jpeg')
|
149
|
+
@event.save.should be_true
|
150
|
+
File.exist?(public_path('uploads/test.jpeg')).should be_true
|
151
|
+
@event.image.should be_an_instance_of(@uploader)
|
152
|
+
@event.image.current_path.should == public_path('uploads/test.jpeg')
|
153
|
+
@event.destroy
|
154
|
+
File.exist?(public_path('uploads/test.jpeg')).should be_false
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
140
158
|
|
141
159
|
end
|
data/spec/orm/sequel_spec.rb
CHANGED
@@ -136,24 +136,20 @@ describe CarrierWave::Sequel do
|
|
136
136
|
end
|
137
137
|
|
138
138
|
it "should assign the filename to the database" do
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
@event[:image].should == 'test.jpeg'
|
144
|
-
end
|
139
|
+
@event.image = stub_file('test.jpeg')
|
140
|
+
@event.save.should be_true
|
141
|
+
@event.reload
|
142
|
+
@event[:image].should == 'test.jpeg'
|
145
143
|
end
|
146
144
|
|
147
145
|
it "should remove the image if remove_image? returns true" do
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
@event[:image].should == ''
|
156
|
-
end
|
146
|
+
@event.image = stub_file('test.jpeg')
|
147
|
+
@event.save
|
148
|
+
@event.remove_image = true
|
149
|
+
@event.save
|
150
|
+
@event.reload
|
151
|
+
@event.image.should be_blank
|
152
|
+
@event[:image].should == ''
|
157
153
|
end
|
158
154
|
end
|
159
155
|
|
@@ -178,12 +174,10 @@ describe CarrierWave::Sequel do
|
|
178
174
|
end
|
179
175
|
|
180
176
|
it "should assign an overridden filename to the database" do
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
@event[:image].should == 'jonas.jpeg'
|
186
|
-
end
|
177
|
+
@event.image = stub_file('test.jpeg')
|
178
|
+
@event.save.should be_true
|
179
|
+
@event.reload
|
180
|
+
@event[:image].should == 'jonas.jpeg'
|
187
181
|
end
|
188
182
|
|
189
183
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -21,7 +21,10 @@ describe CarrierWave::Uploader do
|
|
21
21
|
@stored_file.stub!(:identifier).and_return('this-is-me')
|
22
22
|
@stored_file.stub!(:delete)
|
23
23
|
|
24
|
-
@
|
24
|
+
@storage = mock('a storage engine')
|
25
|
+
@storage.stub!(:store!).and_return(@stored_file)
|
26
|
+
|
27
|
+
@uploader_class.storage.stub!(:new).and_return(@storage)
|
25
28
|
@uploader.store!(@file)
|
26
29
|
end
|
27
30
|
|
data/spec/uploader/store_spec.rb
CHANGED
@@ -67,9 +67,12 @@ describe CarrierWave::Uploader do
|
|
67
67
|
@stored_file = mock('a stored file')
|
68
68
|
@stored_file.stub!(:path).and_return('/path/to/somewhere')
|
69
69
|
@stored_file.stub!(:url).and_return('http://www.example.com')
|
70
|
-
@stored_file.stub!(:identifier).and_return('this-is-me')
|
71
70
|
|
72
|
-
@
|
71
|
+
@storage = mock('a storage engine')
|
72
|
+
@storage.stub!(:store!).and_return(@stored_file)
|
73
|
+
@storage.stub!(:identifier).and_return('this-is-me')
|
74
|
+
|
75
|
+
@uploader_class.storage.stub!(:new).with(@uploader).and_return(@storage)
|
73
76
|
end
|
74
77
|
|
75
78
|
it "should set the current path" do
|
@@ -105,7 +108,7 @@ describe CarrierWave::Uploader do
|
|
105
108
|
|
106
109
|
it "should instruct the storage engine to store the file" do
|
107
110
|
@uploader.cache!(@file)
|
108
|
-
@
|
111
|
+
@storage.should_receive(:store!).with(@uploader.file).and_return(:monkey)
|
109
112
|
@uploader.store!
|
110
113
|
end
|
111
114
|
|
@@ -126,7 +129,7 @@ describe CarrierWave::Uploader do
|
|
126
129
|
|
127
130
|
it "should not re-store a retrieved file" do
|
128
131
|
@stored_file = mock('a stored file')
|
129
|
-
@
|
132
|
+
@storage.stub!(:retrieve!).and_return(@stored_file)
|
130
133
|
|
131
134
|
@uploader_class.storage.should_not_receive(:store!)
|
132
135
|
@uploader.retrieve_from_store!('monkey.txt')
|
@@ -139,9 +142,12 @@ describe CarrierWave::Uploader do
|
|
139
142
|
@stored_file = mock('a stored file')
|
140
143
|
@stored_file.stub!(:path).and_return('/path/to/somewhere')
|
141
144
|
@stored_file.stub!(:url).and_return('http://www.example.com')
|
142
|
-
@stored_file.stub!(:identifier).and_return('this-is-me')
|
143
145
|
|
144
|
-
@
|
146
|
+
@storage = mock('a storage engine')
|
147
|
+
@storage.stub!(:retrieve!).and_return(@stored_file)
|
148
|
+
@storage.stub!(:identifier).and_return('this-is-me')
|
149
|
+
|
150
|
+
@uploader_class.storage.stub!(:new).with(@uploader).and_return(@storage)
|
145
151
|
end
|
146
152
|
|
147
153
|
it "should set the current path" do
|
@@ -165,7 +171,7 @@ describe CarrierWave::Uploader do
|
|
165
171
|
end
|
166
172
|
|
167
173
|
it "should instruct the storage engine to retrieve the file and store the result" do
|
168
|
-
@
|
174
|
+
@storage.should_receive(:retrieve!).with('monkey.txt').and_return(@stored_file)
|
169
175
|
@uploader.retrieve_from_store!('monkey.txt')
|
170
176
|
@uploader.file.should == @stored_file
|
171
177
|
end
|
@@ -194,7 +200,10 @@ describe CarrierWave::Uploader do
|
|
194
200
|
@stored_file.stub!(:path).and_return('/path/to/somewhere')
|
195
201
|
@stored_file.stub!(:url).and_return('http://www.example.com')
|
196
202
|
|
197
|
-
@
|
203
|
+
@storage = mock('a storage engine')
|
204
|
+
@storage.stub!(:store!).and_return(@stored_file)
|
205
|
+
|
206
|
+
@uploader_class.storage.stub!(:new).with(@uploader).and_return(@storage)
|
198
207
|
end
|
199
208
|
|
200
209
|
after do
|
@@ -230,7 +239,10 @@ describe CarrierWave::Uploader do
|
|
230
239
|
@stored_file.stub!(:path).and_return('/path/to/somewhere')
|
231
240
|
@stored_file.stub!(:url).and_return('http://www.example.com')
|
232
241
|
|
233
|
-
@
|
242
|
+
@storage = mock('a storage engine')
|
243
|
+
@storage.stub!(:retrieve!).and_return(@stored_file)
|
244
|
+
|
245
|
+
@uploader_class.storage.stub!(:new).with(@uploader).and_return(@storage)
|
234
246
|
end
|
235
247
|
|
236
248
|
it "should set the current path" do
|
@@ -244,7 +256,7 @@ describe CarrierWave::Uploader do
|
|
244
256
|
end
|
245
257
|
|
246
258
|
it "should pass the identifier to the storage engine" do
|
247
|
-
@
|
259
|
+
@storage.should_receive(:retrieve!).with('monkey.txt').and_return(@stored_file)
|
248
260
|
@uploader.retrieve_from_store!('monkey.txt')
|
249
261
|
@uploader.file.should == @stored_file
|
250
262
|
end
|
data/spec/uploader/url_spec.rb
CHANGED
@@ -21,12 +21,12 @@ describe CarrierWave::Uploader do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it "should raise ArgumentError when version doesn't exist" do
|
24
|
-
lambda { @uploader.url(:thumb) }.should raise_error
|
24
|
+
lambda { @uploader.url(:thumb) }.should raise_error(ArgumentError)
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should not raise ArgumentError when versions version exists" do
|
28
28
|
@uploader_class.version(:thumb)
|
29
|
-
lambda { @uploader.url(:thumb) }.should_not raise_error
|
29
|
+
lambda { @uploader.url(:thumb) }.should_not raise_error(ArgumentError)
|
30
30
|
end
|
31
31
|
|
32
32
|
it "should get the directory relative to public, prepending a slash" do
|
@@ -157,8 +157,14 @@ describe CarrierWave::Uploader do
|
|
157
157
|
@thumb_stored_file.stub!(:path).and_return('/path/to/somewhere/thumb')
|
158
158
|
@thumb_stored_file.stub!(:url).and_return('http://www.example.com/thumb')
|
159
159
|
|
160
|
-
@
|
161
|
-
@
|
160
|
+
@storage = mock('a storage engine')
|
161
|
+
@storage.stub!(:store!).and_return(@base_stored_file)
|
162
|
+
|
163
|
+
@thumb_storage = mock('a storage engine for thumbnails')
|
164
|
+
@thumb_storage.stub!(:store!).and_return(@thumb_stored_file)
|
165
|
+
|
166
|
+
@uploader_class.storage.stub!(:new).with(@uploader).and_return(@storage)
|
167
|
+
@uploader_class.version(:thumb).storage.stub!(:new).with(@uploader.thumb).and_return(@thumb_storage)
|
162
168
|
end
|
163
169
|
|
164
170
|
after do
|
@@ -186,8 +192,8 @@ describe CarrierWave::Uploader do
|
|
186
192
|
|
187
193
|
it "should instruct the storage engine to store the file and its version" do
|
188
194
|
@uploader.cache!(@file)
|
189
|
-
@
|
190
|
-
@
|
195
|
+
@storage.should_receive(:store!).with(@uploader.file).and_return(:monkey)
|
196
|
+
@thumb_storage.should_receive(:store!).with(@uploader.thumb.file).and_return(:gorilla)
|
191
197
|
@uploader.store!
|
192
198
|
end
|
193
199
|
|
@@ -203,8 +209,14 @@ describe CarrierWave::Uploader do
|
|
203
209
|
@base_stored_file = mock('a stored file')
|
204
210
|
@thumb_stored_file = mock('a thumb version of a stored file')
|
205
211
|
|
206
|
-
@
|
207
|
-
@
|
212
|
+
@storage = mock('a storage engine')
|
213
|
+
@storage.stub!(:store!).and_return(@base_stored_file)
|
214
|
+
|
215
|
+
@thumb_storage = mock('a storage engine for thumbnails')
|
216
|
+
@thumb_storage.stub!(:store!).and_return(@thumb_stored_file)
|
217
|
+
|
218
|
+
@uploader_class.storage.stub!(:new).with(@uploader).and_return(@storage)
|
219
|
+
@uploader_class.version(:thumb).storage.stub!(:new).with(@uploader.thumb).and_return(@thumb_storage)
|
208
220
|
|
209
221
|
@base_stored_file.stub!(:delete)
|
210
222
|
@thumb_stored_file.stub!(:delete)
|
@@ -239,27 +251,47 @@ describe CarrierWave::Uploader do
|
|
239
251
|
|
240
252
|
describe '#retrieve_from_store!' do
|
241
253
|
before do
|
242
|
-
@
|
243
|
-
@
|
244
|
-
|
254
|
+
@uploader_class.storage = mock_storage('base')
|
255
|
+
@uploader_class.version(:thumb).storage = mock_storage('thumb')
|
256
|
+
|
257
|
+
@file = File.open(file_path('test.jpg'))
|
258
|
+
|
259
|
+
@base_stored_file = mock('a stored file')
|
260
|
+
@base_stored_file.stub!(:path).and_return('/path/to/somewhere')
|
261
|
+
@base_stored_file.stub!(:url).and_return('http://www.example.com')
|
262
|
+
|
263
|
+
@thumb_stored_file = mock('a thumb version of a stored file')
|
264
|
+
@thumb_stored_file.stub!(:path).and_return('/path/to/somewhere/thumb')
|
265
|
+
@thumb_stored_file.stub!(:url).and_return('http://www.example.com/thumb')
|
266
|
+
|
267
|
+
@storage = mock('a storage engine')
|
268
|
+
@storage.stub!(:retrieve!).and_return(@base_stored_file)
|
269
|
+
|
270
|
+
@thumb_storage = mock('a storage engine for thumbnails')
|
271
|
+
@thumb_storage.stub!(:retrieve!).and_return(@thumb_stored_file)
|
245
272
|
|
246
|
-
@uploader_class.storage.stub!(:
|
273
|
+
@uploader_class.storage.stub!(:new).with(@uploader).and_return(@storage)
|
274
|
+
@uploader_class.version(:thumb).storage.stub!(:new).with(@uploader.thumb).and_return(@thumb_storage)
|
247
275
|
end
|
248
276
|
|
249
277
|
it "should set the current path" do
|
250
278
|
@uploader.retrieve_from_store!('monkey.txt')
|
251
279
|
@uploader.current_path.should == '/path/to/somewhere'
|
280
|
+
@uploader.thumb.current_path.should == '/path/to/somewhere/thumb'
|
252
281
|
end
|
253
282
|
|
254
283
|
it "should set the url" do
|
255
284
|
@uploader.retrieve_from_store!('monkey.txt')
|
256
285
|
@uploader.url.should == 'http://www.example.com'
|
286
|
+
@uploader.thumb.url.should == 'http://www.example.com/thumb'
|
257
287
|
end
|
258
288
|
|
259
289
|
it "should pass the identifier to the storage engine" do
|
260
|
-
@
|
290
|
+
@storage.should_receive(:retrieve!).with('monkey.txt').and_return(@base_stored_file)
|
291
|
+
@thumb_storage.should_receive(:retrieve!).with('monkey.txt').and_return(@thumb_stored_file)
|
261
292
|
@uploader.retrieve_from_store!('monkey.txt')
|
262
|
-
@uploader.file.should == @
|
293
|
+
@uploader.file.should == @base_stored_file
|
294
|
+
@uploader.thumb.file.should == @thumb_stored_file
|
263
295
|
end
|
264
296
|
|
265
297
|
it "should not set the filename" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carrierwave
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Nicklas
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-06-
|
12
|
+
date: 2009-06-20 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -68,7 +68,6 @@ files:
|
|
68
68
|
- spec/orm/sequel_spec.rb
|
69
69
|
- spec/sanitized_file_spec.rb
|
70
70
|
- spec/spec_helper.rb
|
71
|
-
- spec/test.log
|
72
71
|
- spec/uploader/cache_spec.rb
|
73
72
|
- spec/uploader/default_path_spec.rb
|
74
73
|
- spec/uploader/extension_whitelist_spec.rb
|
data/spec/test.log
DELETED
@@ -1,172 +0,0 @@
|
|
1
|
-
# Logfile created on Tue May 19 07:31:54 +0200 2009 by /
|
2
|
-
CarrierWave: removing file
|
3
|
-
CarrierWave::Storage::File: removing file /Users/jonas/Projects/carrierwave/spec/public/uploads/test.jpeg
|
4
|
-
CarrierWave: removing file
|
5
|
-
CarrierWave::Storage::File: removing file /Users/jonas/Projects/carrierwave/spec/public/uploads/test.jpeg
|
6
|
-
CarrierWave: removing file
|
7
|
-
CarrierWave: removing file
|
8
|
-
CarrierWave::Storage::File: removing file /Users/jonas/Projects/carrierwave/spec/public/uploads/test.jpeg
|
9
|
-
CarrierWave: removing file
|
10
|
-
CarrierWave: removing file
|
11
|
-
CarrierWave: removing file
|
12
|
-
CarrierWave: removing file
|
13
|
-
CarrierWave: removing file
|
14
|
-
CarrierWave: removing file
|
15
|
-
CarrierWave: removing file
|
16
|
-
CarrierWave: removing file
|
17
|
-
CarrierWave: removing file
|
18
|
-
CarrierWave: removing file
|
19
|
-
CarrierWave: removing file
|
20
|
-
CarrierWave: removing file
|
21
|
-
CarrierWave: removing file
|
22
|
-
CarrierWave: removing file
|
23
|
-
CarrierWave: removing file
|
24
|
-
CarrierWave: removing file
|
25
|
-
CarrierWave: removing file
|
26
|
-
CarrierWave: removing file
|
27
|
-
I, [2009-05-26T22:35:08.573579 #17868] INFO -- : CarrierWave: removing file
|
28
|
-
I, [2009-05-26T22:35:08.578609 #17868] INFO -- : CarrierWave: removing file
|
29
|
-
I, [2009-05-26T22:35:08.583446 #17868] INFO -- : CarrierWave: removing file
|
30
|
-
I, [2009-05-26T22:35:08.588405 #17868] INFO -- : CarrierWave: removing file
|
31
|
-
I, [2009-05-26T22:35:08.592588 #17868] INFO -- : CarrierWave: removing file
|
32
|
-
I, [2009-05-26T22:35:08.660552 #17868] INFO -- : CarrierWave: removing file
|
33
|
-
I, [2009-05-26T22:35:08.667078 #17868] INFO -- : CarrierWave: removing file
|
34
|
-
I, [2009-05-26T22:35:35.885824 #17876] INFO -- : CarrierWave: removing file
|
35
|
-
I, [2009-05-26T22:35:35.889315 #17876] INFO -- : CarrierWave: removing file
|
36
|
-
I, [2009-05-26T22:35:35.894496 #17876] INFO -- : CarrierWave: removing file
|
37
|
-
I, [2009-05-26T22:35:35.898364 #17876] INFO -- : CarrierWave: removing file
|
38
|
-
I, [2009-05-26T22:35:35.901933 #17876] INFO -- : CarrierWave: removing file
|
39
|
-
I, [2009-05-26T22:35:35.907043 #17876] INFO -- : CarrierWave: removing file
|
40
|
-
I, [2009-05-26T22:35:35.911022 #17876] INFO -- : CarrierWave: removing file
|
41
|
-
I, [2009-05-26T22:35:39.065681 #17881] INFO -- : CarrierWave: removing file
|
42
|
-
I, [2009-05-26T22:35:39.069419 #17881] INFO -- : CarrierWave: removing file
|
43
|
-
I, [2009-05-26T22:35:39.074548 #17881] INFO -- : CarrierWave: removing file
|
44
|
-
I, [2009-05-26T22:35:39.078657 #17881] INFO -- : CarrierWave: removing file
|
45
|
-
I, [2009-05-26T22:35:39.083570 #17881] INFO -- : CarrierWave: removing file
|
46
|
-
I, [2009-05-26T22:35:39.088308 #17881] INFO -- : CarrierWave: removing file
|
47
|
-
I, [2009-05-26T22:35:39.092214 #17881] INFO -- : CarrierWave: removing file
|
48
|
-
CarrierWave: removing file
|
49
|
-
CarrierWave: removing file
|
50
|
-
CarrierWave: removing file
|
51
|
-
CarrierWave: removing file
|
52
|
-
CarrierWave: removing file
|
53
|
-
CarrierWave: removing file
|
54
|
-
CarrierWave: removing file
|
55
|
-
CarrierWave: removing file
|
56
|
-
CarrierWave: removing file
|
57
|
-
CarrierWave: removing file
|
58
|
-
CarrierWave: removing file
|
59
|
-
CarrierWave: removing file
|
60
|
-
CarrierWave: removing file
|
61
|
-
CarrierWave: removing file
|
62
|
-
CarrierWave: removing file
|
63
|
-
CarrierWave: removing file
|
64
|
-
CarrierWave: removing file
|
65
|
-
CarrierWave: removing file
|
66
|
-
I, [2009-05-26T22:36:44.348636 #17909] INFO -- : CarrierWave: removing file
|
67
|
-
I, [2009-05-26T22:36:44.420280 #17909] INFO -- : CarrierWave: removing file
|
68
|
-
I, [2009-05-26T22:36:44.430348 #17909] INFO -- : CarrierWave: removing file
|
69
|
-
I, [2009-05-26T22:37:41.892779 #17927] INFO -- : CarrierWave: removing file
|
70
|
-
I, [2009-05-26T22:37:41.892930 #17927] INFO -- : CarrierWave: removing file for version thumb
|
71
|
-
I, [2009-05-26T22:37:41.892974 #17927] INFO -- : CarrierWave: removing file
|
72
|
-
I, [2009-05-26T22:37:41.900865 #17927] INFO -- : CarrierWave: removing file
|
73
|
-
I, [2009-05-26T22:37:41.900969 #17927] INFO -- : CarrierWave: removing file for version thumb
|
74
|
-
I, [2009-05-26T22:37:41.901011 #17927] INFO -- : CarrierWave: removing file
|
75
|
-
I, [2009-05-26T22:37:41.908823 #17927] INFO -- : CarrierWave: removing file
|
76
|
-
I, [2009-05-26T22:37:41.908946 #17927] INFO -- : CarrierWave: removing file for version thumb
|
77
|
-
I, [2009-05-26T22:37:41.909008 #17927] INFO -- : CarrierWave: removing file
|
78
|
-
I, [2009-05-26T22:38:12.373466 #17935] INFO -- : CarrierWave: removing file
|
79
|
-
I, [2009-05-26T22:38:12.373646 #17935] INFO -- : CarrierWave: removing file for version thumb
|
80
|
-
I, [2009-05-26T22:38:12.373696 #17935] INFO -- : CarrierWave: removing file
|
81
|
-
I, [2009-05-26T22:38:12.381293 #17935] INFO -- : CarrierWave: removing file
|
82
|
-
I, [2009-05-26T22:38:12.381412 #17935] INFO -- : CarrierWave: removing file for version thumb
|
83
|
-
I, [2009-05-26T22:38:12.381458 #17935] INFO -- : CarrierWave: removing file
|
84
|
-
I, [2009-05-26T22:38:12.388623 #17935] INFO -- : CarrierWave: removing file
|
85
|
-
I, [2009-05-26T22:38:12.388736 #17935] INFO -- : CarrierWave: removing file for version thumb
|
86
|
-
I, [2009-05-26T22:38:12.388779 #17935] INFO -- : CarrierWave: removing file
|
87
|
-
CarrierWave: removing file
|
88
|
-
CarrierWave: removing file
|
89
|
-
CarrierWave: removing file
|
90
|
-
CarrierWave: removing file
|
91
|
-
CarrierWave: removing file
|
92
|
-
CarrierWave: removing file
|
93
|
-
CarrierWave: removing file
|
94
|
-
CarrierWave: removing file
|
95
|
-
CarrierWave: removing file
|
96
|
-
CarrierWave: removing file
|
97
|
-
CarrierWave: removing file
|
98
|
-
CarrierWave: removing file
|
99
|
-
CarrierWave: removing file
|
100
|
-
CarrierWave: removing file
|
101
|
-
CarrierWave: removing file
|
102
|
-
CarrierWave: removing file
|
103
|
-
CarrierWave: removing file for version thumb
|
104
|
-
CarrierWave: removing file
|
105
|
-
CarrierWave: removing file
|
106
|
-
CarrierWave: removing file for version thumb
|
107
|
-
CarrierWave: removing file
|
108
|
-
CarrierWave: removing file
|
109
|
-
CarrierWave: removing file for version thumb
|
110
|
-
CarrierWave: removing file
|
111
|
-
I, [2009-05-26T22:39:18.757584 #17962] INFO -- : CarrierWave: removing file
|
112
|
-
I, [2009-05-26T22:39:18.761525 #17962] INFO -- : CarrierWave: removing file
|
113
|
-
I, [2009-05-26T22:39:18.766127 #17962] INFO -- : CarrierWave: removing file
|
114
|
-
I, [2009-05-26T22:39:18.770454 #17962] INFO -- : CarrierWave: removing file
|
115
|
-
I, [2009-05-26T22:39:18.775113 #17962] INFO -- : CarrierWave: removing file
|
116
|
-
I, [2009-05-26T22:39:18.779044 #17962] INFO -- : CarrierWave: removing file
|
117
|
-
I, [2009-05-26T22:39:18.783626 #17962] INFO -- : CarrierWave: removing file
|
118
|
-
I, [2009-05-26T22:39:36.291400 #17982] INFO -- : CarrierWave: removing file
|
119
|
-
I, [2009-05-26T22:39:36.294956 #17982] INFO -- : CarrierWave: removing file
|
120
|
-
I, [2009-05-26T22:39:36.299237 #17982] INFO -- : CarrierWave: removing file
|
121
|
-
I, [2009-05-26T22:39:36.302966 #17982] INFO -- : CarrierWave: removing file
|
122
|
-
I, [2009-05-26T22:39:36.306106 #17982] INFO -- : CarrierWave: removing file
|
123
|
-
I, [2009-05-26T22:39:36.309840 #17982] INFO -- : CarrierWave: removing file
|
124
|
-
I, [2009-05-26T22:39:36.313799 #17982] INFO -- : CarrierWave: removing file
|
125
|
-
CarrierWave: removing file
|
126
|
-
CarrierWave: removing file
|
127
|
-
CarrierWave: removing file
|
128
|
-
CarrierWave: removing file
|
129
|
-
CarrierWave: removing file
|
130
|
-
CarrierWave: removing file
|
131
|
-
CarrierWave: removing file
|
132
|
-
CarrierWave: removing file
|
133
|
-
CarrierWave: removing file
|
134
|
-
CarrierWave: removing file
|
135
|
-
CarrierWave: removing file
|
136
|
-
CarrierWave: removing file
|
137
|
-
CarrierWave: removing file
|
138
|
-
CarrierWave: removing file
|
139
|
-
CarrierWave: removing file
|
140
|
-
CarrierWave: removing file
|
141
|
-
CarrierWave: removing file for version thumb
|
142
|
-
CarrierWave: removing file
|
143
|
-
CarrierWave: removing file
|
144
|
-
CarrierWave: removing file for version thumb
|
145
|
-
CarrierWave: removing file
|
146
|
-
CarrierWave: removing file
|
147
|
-
CarrierWave: removing file for version thumb
|
148
|
-
CarrierWave: removing file
|
149
|
-
CarrierWave: removing file
|
150
|
-
CarrierWave: removing file
|
151
|
-
CarrierWave: removing file
|
152
|
-
CarrierWave: removing file
|
153
|
-
CarrierWave: removing file
|
154
|
-
CarrierWave: removing file
|
155
|
-
CarrierWave: removing file
|
156
|
-
CarrierWave: removing file
|
157
|
-
CarrierWave: removing file
|
158
|
-
CarrierWave: removing file
|
159
|
-
CarrierWave: removing file
|
160
|
-
CarrierWave: removing file
|
161
|
-
CarrierWave: removing file
|
162
|
-
CarrierWave: removing file
|
163
|
-
CarrierWave: removing file
|
164
|
-
CarrierWave: removing file
|
165
|
-
CarrierWave: removing file for version thumb
|
166
|
-
CarrierWave: removing file
|
167
|
-
CarrierWave: removing file
|
168
|
-
CarrierWave: removing file for version thumb
|
169
|
-
CarrierWave: removing file
|
170
|
-
CarrierWave: removing file
|
171
|
-
CarrierWave: removing file for version thumb
|
172
|
-
CarrierWave: removing file
|