lib/paperclip/globalize3/attachment.rb in paperclip-globalize3-1.1.0 vs lib/paperclip/globalize3/attachment.rb in paperclip-globalize3-2.0.0
- old
+ new
@@ -9,41 +9,29 @@
base.send :alias_method_chain, :queue_all_for_delete, :globalize3
base.send :alias_method_chain, :queue_some_for_delete, :globalize3
end
module InstanceMethods
-
def assign_with_globalize3(uploaded_file)
+ @file = Paperclip.io_adapters.for(uploaded_file)
ensure_required_accessors!
- file = Paperclip.io_adapters.for(uploaded_file)
+ ensure_required_validations!
- return nil if file.respond_to?(:assignment?) && !file.assignment?
- self.clear(*only_process, :locales => Globalize.locale) # [paperclip-globalize3] only clear current locale
- return nil if file.nil?
-
- @queued_for_write[:original] = file
- instance_write(:file_name, cleanup_filename(file.original_filename))
- instance_write(:content_type, file.content_type.to_s.strip)
- instance_write(:file_size, file.size)
- instance_write(:fingerprint, file.fingerprint) if instance_respond_to?(:fingerprint)
- instance_write(:created_at, Time.now) if has_enabled_but_unset_created_at?
- instance_write(:updated_at, Time.now)
-
- @dirty = true
-
- if post_processing &&
- (file.respond_to?(:assignment?) || valid_assignment?)
- post_process(*only_process)
+ if @file.assignment?
+ clear(*only_process, :locales => Globalize.locale) # [paperclip-globalize3] only clear current locale
+ if @file.nil?
+ nil
+ else
+ assign_attributes
+ post_process_file
+ reset_file_if_original_reprocessed
+ end
+ else
+ nil
end
-
- instance_write(:file_size, @queued_for_write[:original].size)
- instance_write(:fingerprint, @queued_for_write[:original].fingerprint) if instance_respond_to?(:fingerprint)
- updater = :"#{name}_file_name_will_change!"
- instance.send updater if instance.respond_to? updater
end
-
def clear_with_globalize3(*args)
options = args.extract_options!
styles_to_clear = args
if styles_to_clear.any?
queue_some_for_delete(*styles_to_clear, options)
@@ -79,10 +67,70 @@
Globalize.with_locales([*with_locales]) { yield }
else
yield
end
end
+ end
+ module Compatibility
+ # The paperclip-globalize3 patches are based on paperclip 4.2 code;
+ # this module needs to be included when trying to use with paperclip 4.1.
+ module Paperclip41
+ def assign_attributes
+ @queued_for_write[:original] = @file
+ assign_file_information
+ assign_fingerprint(@file.fingerprint)
+ assign_timestamps
+ end
+
+ def assign_file_information
+ instance_write(:file_name, cleanup_filename(@file.original_filename))
+ instance_write(:content_type, @file.content_type.to_s.strip)
+ instance_write(:file_size, @file.size)
+ end
+
+ def assign_fingerprint(fingerprint)
+ if instance_respond_to?(:fingerprint)
+ instance_write(:fingerprint, fingerprint)
+ end
+ end
+
+ def assign_timestamps
+ if has_enabled_but_unset_created_at?
+ instance_write(:created_at, Time.now)
+ end
+
+ instance_write(:updated_at, Time.now)
+ end
+
+ def post_process_file
+ dirty!
+
+ if post_processing
+ post_process(*only_process)
+ end
+ end
+
+ def dirty!
+ @dirty = true
+ end
+
+ def reset_file_if_original_reprocessed
+ instance_write(:file_size, @queued_for_write[:original].size)
+ assign_fingerprint(@queued_for_write[:original].fingerprint)
+ reset_updater
+ end
+
+ def reset_updater
+ if instance.respond_to?(updater)
+ instance.send(updater)
+ end
+ end
+
+ def updater
+ :"#{name}_file_name_will_change!"
+ end
+ end
end
end
end
end