paperclip 2.2.7 → 2.2.8

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of paperclip might be problematic. Click here for more details.

@@ -43,7 +43,7 @@ end
43
43
  # documentation for Paperclip::ClassMethods for more useful information.
44
44
  module Paperclip
45
45
 
46
- VERSION = "2.2.7"
46
+ VERSION = "2.2.8"
47
47
 
48
48
  class << self
49
49
  # Provides configurability to Paperclip. There are a number of options available, such as:
@@ -49,8 +49,6 @@ module Paperclip
49
49
 
50
50
  normalize_style_definition
51
51
  initialize_storage
52
-
53
- log("Paperclip attachment #{name} on #{instance.class} initialized.")
54
52
  end
55
53
 
56
54
  # What gets called when you call instance.attachment = File. It clears
@@ -62,9 +60,6 @@ module Paperclip
62
60
  # If the file that is assigned is not valid, the processing (i.e.
63
61
  # thumbnailing, etc) will NOT be run.
64
62
  def assign uploaded_file
65
- # This is because of changes in Rails 2.3 that cause blank fields to send nil
66
- return nil if uploaded_file.nil?
67
-
68
63
  %w(file_name).each do |field|
69
64
  unless @instance.class.column_names.include?("#{name}_#{field}")
70
65
  raise PaperclipError.new("#{@instance.class} model does not have required column '#{name}_#{field}'")
@@ -77,16 +72,12 @@ module Paperclip
77
72
  end
78
73
 
79
74
  return nil unless valid_assignment?(uploaded_file)
80
- log("Assigning #{uploaded_file.inspect} to #{name}")
81
75
 
82
76
  uploaded_file.binmode if uploaded_file.respond_to? :binmode
83
- queue_existing_for_delete
84
- @errors = {}
85
- @validation_errors = nil
77
+ self.clear
86
78
 
87
79
  return nil if uploaded_file.nil?
88
80
 
89
- log("Writing attributes for #{name}")
90
81
  @queued_for_write[:original] = uploaded_file.to_tempfile
91
82
  instance_write(:file_name, uploaded_file.original_filename.strip.gsub(/[^\w\d\.\-]+/, '_'))
92
83
  instance_write(:content_type, uploaded_file.content_type.to_s.strip)
@@ -149,13 +140,11 @@ module Paperclip
149
140
  # the instance's errors and returns false, cancelling the save.
150
141
  def save
151
142
  if valid?
152
- log("Saving files for #{name}")
153
143
  flush_deletes
154
144
  flush_writes
155
145
  @dirty = false
156
146
  true
157
147
  else
158
- log("Errors on #{name}. Not saving.")
159
148
  flush_errors
160
149
  false
161
150
  end
@@ -293,7 +282,7 @@ module Paperclip
293
282
  end
294
283
 
295
284
  def valid_assignment? file #:nodoc:
296
- file.respond_to?(:original_filename) && file.respond_to?(:content_type)
285
+ file.nil? || (file.respond_to?(:original_filename) && file.respond_to?(:content_type))
297
286
  end
298
287
 
299
288
  def validate #:nodoc:
@@ -370,12 +359,10 @@ module Paperclip
370
359
  end
371
360
 
372
361
  def post_process_styles
373
- log("Post-processing #{name}")
374
362
  @styles.each do |name, args|
375
363
  begin
376
364
  raise RuntimeError.new("Style #{name} has no processors defined.") if args[:processors].blank?
377
365
  @queued_for_write[name] = args[:processors].inject(@queued_for_write[:original]) do |file, processor|
378
- log("Processing #{name} #{file} in the #{processor} processor.")
379
366
  Paperclip.processor(processor).make(file, args, self)
380
367
  end
381
368
  rescue PaperclipError => e
@@ -397,7 +384,6 @@ module Paperclip
397
384
 
398
385
  def queue_existing_for_delete #:nodoc:
399
386
  return unless file?
400
- log("Queueing the existing files for #{name} for deletion.")
401
387
  @queued_for_delete += [:original, *@styles.keys].uniq.map do |style|
402
388
  path(style) if exists?(style)
403
389
  end.compact
@@ -36,11 +36,10 @@ module Paperclip
36
36
  alias_method :to_io, :to_file
37
37
 
38
38
  def flush_writes #:nodoc:
39
- logger.info("[paperclip] Writing files for #{name}")
40
39
  @queued_for_write.each do |style, file|
41
40
  file.close
42
41
  FileUtils.mkdir_p(File.dirname(path(style)))
43
- logger.info("[paperclip] -> #{path(style)}")
42
+ logger.info("[paperclip] saving #{path(style)}")
44
43
  FileUtils.mv(file.path, path(style))
45
44
  FileUtils.chmod(0644, path(style))
46
45
  end
@@ -48,10 +47,9 @@ module Paperclip
48
47
  end
49
48
 
50
49
  def flush_deletes #:nodoc:
51
- logger.info("[paperclip] Deleting files for #{name}")
52
50
  @queued_for_delete.each do |path|
53
51
  begin
54
- logger.info("[paperclip] -> #{path}")
52
+ logger.info("[paperclip] deleting #{path}")
55
53
  FileUtils.rm(path) if File.exist?(path)
56
54
  rescue Errno::ENOENT => e
57
55
  # ignore file-not-found, let everything else pass
@@ -151,7 +149,6 @@ module Paperclip
151
149
  base.class.interpolations[:s3_domain_url] = lambda do |attachment, style|
152
150
  "#{attachment.s3_protocol}://#{attachment.bucket_name}.s3.amazonaws.com/#{attachment.path(style).gsub(%r{^/}, "")}"
153
151
  end
154
- ActiveRecord::Base.logger.info("[paperclip] S3 Storage Initalized.")
155
152
  end
156
153
 
157
154
  def s3
@@ -193,10 +190,9 @@ module Paperclip
193
190
  alias_method :to_io, :to_file
194
191
 
195
192
  def flush_writes #:nodoc:
196
- logger.info("[paperclip] Writing files for #{name}")
197
193
  @queued_for_write.each do |style, file|
198
194
  begin
199
- logger.info("[paperclip] -> #{path(style)}")
195
+ logger.info("[paperclip] saving #{path(style)}")
200
196
  key = s3_bucket.key(path(style))
201
197
  key.data = file
202
198
  key.put(nil, @s3_permissions, {'Content-type' => instance_read(:content_type)}.merge(@s3_headers))
@@ -208,10 +204,9 @@ module Paperclip
208
204
  end
209
205
 
210
206
  def flush_deletes #:nodoc:
211
- logger.info("[paperclip] Writing files for #{name}")
212
207
  @queued_for_delete.each do |path|
213
208
  begin
214
- logger.info("[paperclip] -> #{path}")
209
+ logger.info("[paperclip] deleting #{path}")
215
210
  if file = s3_bucket.key(path)
216
211
  file.delete
217
212
  end
@@ -599,14 +599,14 @@ class AttachmentTest < Test::Unit::TestCase
599
599
  end
600
600
  end
601
601
 
602
- should "not delete the files saving in a deprecated manner" do
603
- @attachment.expects(:instance_write).with(:file_name, nil).never
604
- @attachment.expects(:instance_write).with(:content_type, nil).never
605
- @attachment.expects(:instance_write).with(:file_size, nil).never
606
- @attachment.expects(:instance_write).with(:updated_at, nil).never
602
+ should "delete the files after assigning nil" do
603
+ @attachment.expects(:instance_write).with(:file_name, nil)
604
+ @attachment.expects(:instance_write).with(:content_type, nil)
605
+ @attachment.expects(:instance_write).with(:file_size, nil)
606
+ @attachment.expects(:instance_write).with(:updated_at, nil)
607
607
  @attachment.assign nil
608
608
  @attachment.save
609
- @existing_names.each{|f| assert File.exists?(f) }
609
+ @existing_names.each{|f| assert ! File.exists?(f) }
610
610
  end
611
611
 
612
612
  should "delete the files when you call #clear and #save" do
File without changes
@@ -91,8 +91,6 @@ class PaperclipTest < Test::Unit::TestCase
91
91
  end
92
92
 
93
93
  should "not assign the avatar on mass-set" do
94
- @dummy.logger.expects(:debug)
95
-
96
94
  @dummy.attributes = { :other => "I'm set!",
97
95
  :avatar => @file }
98
96
 
@@ -101,8 +99,6 @@ class PaperclipTest < Test::Unit::TestCase
101
99
  end
102
100
 
103
101
  should "still allow assigment on normal set" do
104
- @dummy.logger.expects(:debug).times(0)
105
-
106
102
  @dummy.other = "I'm set!"
107
103
  @dummy.avatar = @file
108
104
 
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paperclip
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.7
4
+ version: 2.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Yurek
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-12 00:00:00 -04:00
12
+ date: 2009-04-02 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -80,6 +80,7 @@ files:
80
80
  - test/fixtures/50x50.png
81
81
  - test/fixtures/5k.png
82
82
  - test/fixtures/bad.png
83
+ - test/fixtures/s3.yml
83
84
  - test/fixtures/text.txt
84
85
  - test/fixtures/twopage.pdf
85
86
  - test/geometry_test.rb
@@ -95,6 +96,7 @@ files:
95
96
  - test/s3.yml
96
97
  - test/storage_test.rb
97
98
  - test/thumbnail_test.rb
99
+ - test/tmp/storage.txt
98
100
  - shoulda_macros/paperclip.rb
99
101
  has_rdoc: true
100
102
  homepage: http://www.thoughtbot.com/projects/paperclip