我刚升级到Rails3,然后安装了我通常使用的attachment_fu插件失败了。于是我开始谷歌搜索,虽然我确实找到了一个适用于Rails3版本的插件,但似乎有更多的人在谈论Rails3中的paperclip。
首先,paperclip有什么优点?
它是否有更好的Rails3支持?
我刚升级到Rails3,然后安装了我通常使用的attachment_fu插件失败了。于是我开始谷歌搜索,虽然我确实找到了一个适用于Rails3版本的插件,但似乎有更多的人在谈论Rails3中的paperclip。
首先,paperclip有什么优点?
它是否有更好的Rails3支持?
不是用Paperclip,而是使用carrierwave。
为了处理文件上传,我已经从Paperclip转移到CarrierWave。虽然在我所使用的许多应用程序中,Paperclip一直表现良好,并且继续为我服务,但我真的很欣赏CarrierWave采取的模块化方法。它对于你使用的流行S3客户端是不可知的,支持aws/s3和right_aws。它也与ORM无关,不紧密耦合到Active Record。Paperclip的紧密耦合给我们在工作中带来了一些困扰,我也对Paperclip对aws/s3和right_aws的支持状态感到困惑。因此,我很高兴找到这个新项目,维护者Jonas Nicklas似乎是一个非常负责任和乐于助人的家伙,这总是件好事。代码看起来很棒,我迄今为止使用这个库的时候很容易。
(来源:http://trevorturk.com/2010/2/8/kzak-an-open-source-web-based-jukebox/)
更多信息请参见:
我让attachment_fu与rails3兼容。
请参见https://github.com/mihael/attachment_fu
编辑:但是对于一些用户来说已经损坏了,我也不再维护它了,所以如果你不想自己修改,请寻找其他解决方案;)
我在正在开发的一个项目中使用rails3.0.3测试了paperclip vs carrierwave vs attachment_fu。
到目前为止,attachment_fu像往常一样表现得非常好,但代码仍需要通过回调系统进行一些重构。它支持cloudfiles、s3等后端。
Paperclip也非常好用,而且非常容易使用。基本设置没有让我上传电影(必须添加选项: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
Dragonfly非常好用。试试看,它可以处理文件和图片。