我刚刚升级到 rails3,当我安装我常用的 attachment_fu 插件时失败了。所以我开始用谷歌搜索它,虽然我确实找到了一个 rails3 版本,但似乎有更多的人在谈论带有 rails3 的回形针。
那么首先,回形针的优点是什么?
它对rails3有更好的支持吗?
我刚刚升级到 rails3,当我安装我常用的 attachment_fu 插件时失败了。所以我开始用谷歌搜索它,虽然我确实找到了一个 rails3 版本,但似乎有更多的人在谈论带有 rails3 的回形针。
那么首先,回形针的优点是什么?
它对rails3有更好的支持吗?
Neither. Use carrierwave .
To handle the file uploads, I’ve switched from Paperclip to CarrierWave. While Paperclip has (and continues) to serve me well in many applications I work with, I really appreciate the modular approach that CarrierWave takes. It’s agnostic as to which of the popular S3 clients you use, supporting both aws/s3 and right_aws. It’s also ORM agnostic and not tightly coupled to Active Record. The tight coupling of Paperclip has caused us some grief at work, and I’m also confused about the state of Paperclip’s support for aws/s3 and right_aws. So, I was happy to find this new project, and the maintainer Jonas Nicklas seems to be an extremely responsive and helpful dude, which is always good thing. The code looks great, and I’ve had an easy time working with this library so far. (from: http://trevorturk.com/2010/2/8/kzak-an-open-source-web-based-jukebox/)
More info here:
我使附件_fu rails3 兼容。
见https://github.com/mihael/attachment_fu
编辑:但是对于某些用户来说它已经坏了,我没有进一步维护它,所以如果你不想自己破解它,请查看其他解决方案;)
我使用 rails3.0.3 测试了回形针、carrierwave 和 attachment_fu,用于我正在从事的项目。
到目前为止, attachment_fu和往常一样工作得很好,但是代码仍然需要使用回调系统进行一些重构。它具有云文件s3的后端。
回形针也非常好,非常易于使用。基本设置不允许我上传电影(必须添加选项:whiny=>false),并且它没有按我预期的方式清理文件名。我是这样做的:
class Asset < ActiveRecord::Base
has_attached_file :file, :styles => { :small => "300x300>", :thumb => "50x50>" }, :whiny => false
before_create :sanitize_file_name
private
def sanitize_file_name
self.file.instance_write( :file_name, file_file_name.gsub(/[^A-Za-z0-9\.\-]/, '_'))
end
end
Paperclip 有 s3 后端,但没有内置的 cloudfiles 后端。有一个为 rails2.3.5 构建的回形针叉(google for paperclip-cloudfiles)(在 github 上搜索 paperclip_demo)。
Carrierwave看起来非常漂亮,具有解耦架构,但我不喜欢它不会删除更新和销毁对象时的内容,从而在磁盘上留下一堆文件和目录。基本的载波设置也不允许我上传电影,尽管它可以很好地清理文件名。我还没有找到快速解决这个问题的方法。如果您使用的是 Mongoid 和 GridFS,carrierwave 已内置支持。
最后,我将 Paperclip 用于我的项目。
如果您想在 Rails 3.2 及更高版本中继续使用它,我已经为 attachment_fu 创建了一个 gem。
蜻蜓确实不错。试试看,它可以处理文件和图像。