model_attachment 0.0.15 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/model_attachment/amazon.rb +26 -11
- data/lib/model_attachment/version.rb +1 -1
- data/lib/model_attachment.rb +58 -32
- metadata +3 -3
@@ -4,9 +4,13 @@ module ModelAttachment
|
|
4
4
|
# returns the aws url
|
5
5
|
# +type+: type passed to has_attachment, ex. small, large
|
6
6
|
def aws_url(type = "")
|
7
|
+
aws_connect
|
8
|
+
|
7
9
|
begin
|
8
10
|
return AWS::S3::S3Object.find(aws_key(type), default_bucket).url
|
9
|
-
rescue
|
11
|
+
rescue Exception => e
|
12
|
+
log("Amazon: #{e.message}")
|
13
|
+
log("Backtrace: #{e.backtrace[0]}")
|
10
14
|
log("Could not get object: #{aws_key(type)}")
|
11
15
|
end
|
12
16
|
end
|
@@ -52,11 +56,11 @@ module ModelAttachment
|
|
52
56
|
aws_connect
|
53
57
|
|
54
58
|
begin
|
55
|
-
AWS::S3::S3Object.store(aws_key, open(full_filename), default_bucket, :content_type => content_type)
|
59
|
+
AWS::S3::S3Object.store(aws_key, open(full_filename, 'rb'), default_bucket, :content_type => content_type)
|
56
60
|
|
57
61
|
# copy over modified files
|
58
62
|
process_image_types do |name, value|
|
59
|
-
AWS::S3::S3Object.store(aws_key(name.to_s), open(full_filename), default_bucket, :content_type => content_type)
|
63
|
+
AWS::S3::S3Object.store(aws_key(name.to_s), open(full_filename, 'rb'), default_bucket, :content_type => content_type)
|
60
64
|
end
|
61
65
|
|
62
66
|
self.bucket = default_bucket
|
@@ -92,18 +96,29 @@ module ModelAttachment
|
|
92
96
|
def move_to_filesystem
|
93
97
|
aws_connect
|
94
98
|
begin
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
+
# streaming causes encoding error
|
100
|
+
|
101
|
+
File.open(full_filename, 'wb') do |file|
|
102
|
+
|
103
|
+
file.write(AWS::S3::S3Object.value(path + file_name, default_bucket))
|
104
|
+
file.rewind
|
105
|
+
|
106
|
+
# AWS::S3::S3Object.stream(path + file_name, default_bucket) do |chunk|
|
107
|
+
# log("Encoding: #{chunk.encoding}")
|
108
|
+
# file.write chunk
|
109
|
+
# end
|
99
110
|
end
|
100
111
|
|
101
112
|
# copy over modified files
|
102
113
|
process_image_types do |name, value|
|
103
|
-
open(full_filename(name), '
|
104
|
-
|
105
|
-
|
106
|
-
|
114
|
+
File.open(full_filename(name), 'wb') do |file|
|
115
|
+
|
116
|
+
file.write(AWS::S3::S3Object.value(path + file_name, default_bucket))
|
117
|
+
file.rewind
|
118
|
+
|
119
|
+
# AWS::S3::S3Object.stream(path + filename(name), default_bucket) do |chunk|
|
120
|
+
# file.write chunk
|
121
|
+
# end
|
107
122
|
end
|
108
123
|
end
|
109
124
|
|
data/lib/model_attachment.rb
CHANGED
@@ -216,25 +216,20 @@ module ModelAttachment
|
|
216
216
|
end
|
217
217
|
|
218
218
|
private
|
219
|
-
|
220
|
-
def process_image_types #:nodoc:
|
221
|
-
if self.class.attachment_options[:types]
|
222
|
-
self.class.attachment_options[:types].each do |name, value|
|
223
|
-
if image?
|
224
|
-
yield(name, value)
|
225
|
-
end
|
226
|
-
end
|
227
|
-
end
|
228
|
-
end
|
229
|
-
|
219
|
+
|
230
220
|
# save the correct attribute info before the save
|
231
221
|
def save_attributes
|
232
222
|
return if file_name.nil? || file_name.class.to_s == "String"
|
233
223
|
@temp_file = self.file_name
|
234
|
-
|
224
|
+
|
235
225
|
# get original filename info and clean up for storage
|
236
|
-
|
237
|
-
|
226
|
+
filename = File.basename(@temp_file)
|
227
|
+
if @temp_file.original_filename
|
228
|
+
filename = @temp_file.original_filename
|
229
|
+
end
|
230
|
+
|
231
|
+
ext = File.extname(filename)
|
232
|
+
base = File.basename(filename, ext).strip.gsub(/[^A-Za-z\d\.\-_]+/, '_')
|
238
233
|
|
239
234
|
# save attributes
|
240
235
|
self.file_name = base + ext
|
@@ -248,31 +243,62 @@ module ModelAttachment
|
|
248
243
|
def save_attached_files
|
249
244
|
return if @temp_file.nil? or @temp_file == ""
|
250
245
|
options = self.class.attachment_options
|
251
|
-
|
246
|
+
|
247
|
+
puts "Path: #{full_path} Basename: #{basename} Extension: #{extension}"
|
252
248
|
log("Path: #{full_path} Basename: #{basename} Extension: #{extension}")
|
253
249
|
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
250
|
+
begin
|
251
|
+
# copy image to correct path
|
252
|
+
unless Dir.exists?(full_path)
|
253
|
+
FileUtils.mkdir_p(full_path)
|
254
|
+
end
|
255
|
+
FileUtils.chmod(0755, full_path)
|
256
|
+
|
257
|
+
if File.exists?(@temp_file.path)
|
258
|
+
FileUtils.mv(@temp_file.path, full_path + basename + extension)
|
259
|
+
else
|
260
|
+
raise "File Error: #{@temp_file.path} does not exist"
|
261
|
+
end
|
262
|
+
|
263
|
+
# run any processing passed in on images
|
264
|
+
process_images
|
265
|
+
rescue Exception => e
|
266
|
+
puts "Error: #{e.message}"
|
267
|
+
puts "\tBacktrace: #{e.backtrace[0..2]}"
|
268
|
+
|
269
|
+
log("Error: #{e.message}")
|
270
|
+
log("\tBacktrace: #{e.backtrace[0]}")
|
271
|
+
ensure
|
272
|
+
@temp_file.close if @temp_file.respond_to?(:close)
|
273
|
+
@dirty = true
|
274
|
+
@temp_file = nil
|
275
|
+
end
|
265
276
|
end
|
266
277
|
|
267
278
|
# run each processor on file
|
268
279
|
def process_images
|
269
280
|
process_image_types do |name, value|
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
281
|
+
begin
|
282
|
+
command = value[:command]
|
283
|
+
old_filename = full_filename
|
284
|
+
new_filename = full_filename(name)
|
285
|
+
log("Create #{name} by running #{command} on #{old_filename}")
|
286
|
+
log("Created: #{new_filename}")
|
287
|
+
`#{command} #{old_filename} #{new_filename}`
|
288
|
+
rescue Exception => e
|
289
|
+
puts "Process Images Error: #{e.message}"
|
290
|
+
puts "\tBacktrace: #{e.backtrace[0]}"
|
291
|
+
end
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
def process_image_types #:nodoc:
|
296
|
+
if self.class.attachment_options[:types]
|
297
|
+
self.class.attachment_options[:types].each do |name, value|
|
298
|
+
if image?
|
299
|
+
yield(name, value)
|
300
|
+
end
|
301
|
+
end
|
276
302
|
end
|
277
303
|
end
|
278
304
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 17
|
9
|
+
version: 0.0.17
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Steve Walker
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-06-
|
17
|
+
date: 2010-06-29 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|