Module: Technoweenie::AttachmentFu::ClassMethods
- Defined in:
- lib/attachment_fu.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#after_attachment_saved(&block) ⇒ Object
Callback after an attachment has been saved either to the file system or the DB.
-
#after_resize(&block) ⇒ Object
Callback after an image has been resized.
-
#before_thumbnail_saved(&block) ⇒ Object
Callback before a thumbnail is saved.
-
#copy_to_temp_file(file, temp_base_name) ⇒ Object
Copies the given file path to a new tempfile, returning the closed tempfile.
-
#image?(content_type) ⇒ Boolean
Returns true or false if the given content type is recognized as an image.
-
#thumbnail_class ⇒ Object
Get the thumbnail class, which is the current attachment class by default.
-
#validates_as_attachment ⇒ Object
Performs common validations for attachment models.
-
#write_to_temp_file(data, temp_base_name) ⇒ Object
Writes the given data to a new tempfile, returning the closed tempfile.
Class Method Details
.extended(base) ⇒ Object
163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/attachment_fu.rb', line 163 def self.extended(base) base.class_inheritable_accessor :attachment_options base.before_destroy :destroy_thumbnails base.before_validation :set_size_from_temp_path base.after_save :after_process_attachment base.after_destroy :destroy_file base.after_validation :process_attachment base.attr_accessible :uploaded_data if defined?(::ActiveSupport::Callbacks) base.define_callbacks :after_resize, :after_attachment_saved, :before_thumbnail_saved end end |
Instance Method Details
#after_attachment_saved(&block) ⇒ Object
Callback after an attachment has been saved either to the file system or the DB. Only called if the file has been changed, not necessarily if the record is updated.
class Foo < ActiveRecord::Base
acts_as_attachment
after_attachment_saved do |record|
...
end
end
198 199 200 |
# File 'lib/attachment_fu.rb', line 198 def (&block) write_inheritable_array(:after_attachment_saved, [block]) end |
#after_resize(&block) ⇒ Object
Callback after an image has been resized.
class Foo < ActiveRecord::Base
after_resize do |record, img|
record.aspect_ratio = img.columns.to_f / img.rows.to_f
end
end
185 186 187 |
# File 'lib/attachment_fu.rb', line 185 def after_resize(&block) write_inheritable_array(:after_resize, [block]) end |
#before_thumbnail_saved(&block) ⇒ Object
Callback before a thumbnail is saved. Use this to pass any necessary extra attributes that may be required.
class Foo < ActiveRecord::Base
acts_as_attachment
before_thumbnail_saved do |thumbnail|
record = thumbnail.parent
...
end
end
211 212 213 |
# File 'lib/attachment_fu.rb', line 211 def before_thumbnail_saved(&block) write_inheritable_array(:before_thumbnail_saved, [block]) end |
#copy_to_temp_file(file, temp_base_name) ⇒ Object
Copies the given file path to a new tempfile, returning the closed tempfile.
224 225 226 227 228 229 |
# File 'lib/attachment_fu.rb', line 224 def copy_to_temp_file(file, temp_base_name) returning Tempfile.new(temp_base_name, Technoweenie::AttachmentFu.tempfile_path) do |tmp| tmp.close FileUtils.cp file, tmp.path end end |
#image?(content_type) ⇒ Boolean
Returns true or false if the given content type is recognized as an image.
159 160 161 |
# File 'lib/attachment_fu.rb', line 159 def image?(content_type) content_types.include?(content_type) end |
#thumbnail_class ⇒ Object
Get the thumbnail class, which is the current attachment class by default. Configure this with the :thumbnail_class option.
218 219 220 221 |
# File 'lib/attachment_fu.rb', line 218 def thumbnail_class [:thumbnail_class] = [:thumbnail_class].constantize unless [:thumbnail_class].is_a?(Class) [:thumbnail_class] end |
#validates_as_attachment ⇒ Object
Performs common validations for attachment models.
153 154 155 156 |
# File 'lib/attachment_fu.rb', line 153 def validates_presence_of :size, :content_type, :filename validate :attachment_attributes_valid? end |
#write_to_temp_file(data, temp_base_name) ⇒ Object
Writes the given data to a new tempfile, returning the closed tempfile.
232 233 234 235 236 237 238 |
# File 'lib/attachment_fu.rb', line 232 def write_to_temp_file(data, temp_base_name) returning Tempfile.new(temp_base_name, Technoweenie::AttachmentFu.tempfile_path) do |tmp| tmp.binmode tmp.write data tmp.close end end |