Testing with attachment_fu
When you’re testing uploads with attachment_fu, your files end up in RAILS_ROOT/public by default. This is not very handy because they might override your carefully uploaded bunny pictures in development. You can easily solve this by overriding the full_filename
method on your attachment model. Let’s assume you have something like this.
class Asset < ActiveRecord::Base
belongs_to :post
has_attachment :content_type => :image, :storage => :file_system
end
Then you can add the following to the file your tests are defined in:
class Asset
def full_filename(thumbnail = nil)
file_system_path = (thumbnail ? thumbnail_class : self).attachment_options[:path_prefix].to_s
File.join(Dir::tmpdir(), file_system_path, *partitioned_path(thumbnail_name_for(thumbnail)))
end
end
This will make your files get written to /tmp/public. If you have multiple tests that have to override the attachment class, it’s probably best to put it in a separate file.