Module: Technoweenie::AttachmentFu::ClassMethods
- Defined in:
- lib/attachment_fu.rb
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.
- #content_types ⇒ Object
-
#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.
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
155 156 157 |
# File 'lib/attachment_fu.rb', line 155 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
142 143 144 |
# File 'lib/attachment_fu.rb', line 142 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 |record, thumbnail|
...
end
end
167 168 169 |
# File 'lib/attachment_fu.rb', line 167 def before_thumbnail_saved(&block) write_inheritable_array(:before_thumbnail_saved, [block]) end |
#content_types ⇒ Object
119 120 121 |
# File 'lib/attachment_fu.rb', line 119 def content_types Technoweenie::AttachmentFu.content_types end |
#copy_to_temp_file(file, temp_base_name) ⇒ Object
Copies the given file path to a new tempfile, returning the closed tempfile.
179 180 181 182 183 184 |
# File 'lib/attachment_fu.rb', line 179 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.
130 131 132 |
# File 'lib/attachment_fu.rb', line 130 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.
173 174 175 176 |
# File 'lib/attachment_fu.rb', line 173 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.
124 125 126 127 |
# File 'lib/attachment_fu.rb', line 124 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.
187 188 189 190 191 192 193 |
# File 'lib/attachment_fu.rb', line 187 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 |