用于Rails3的Attachment_fu或Paperclip

12

我刚升级到Rails3,然后安装了我通常使用的attachment_fu插件失败了。于是我开始谷歌搜索,虽然我确实找到了一个适用于Rails3版本的插件,但似乎有更多的人在谈论Rails3中的paperclip。

首先,paperclip有什么优点?

它是否有更好的Rails3支持?

4个回答

12

不是用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/

更多信息请参见:


好的,谢谢建议,我现在正在研究它,看起来非常有趣。 - DJ Forth
是的,Carrierwave非常棒,现在它使用Fog库来支持S3。我强烈推荐使用它。您还可以使用Paperclip兼容模式,因此如果您想随时切换到Paperclip,这将非常容易。 - Trevor Turk

7

我让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

Paperclip有s3后端,但没有内置的cloudfiles后端。有一个针对此问题的Paperclip分支(可以在谷歌上搜索paperclip-cloudfiles),它适用于rails2.3.5(可以在GitHub上搜索paperclip_demo)。
Carrierwave看起来非常不错,具有解耦架构,但我不喜欢它不会在更新和销毁对象时删除内容,这样会在磁盘上留下一堆文件和目录。基本的carrierwave设置也不能让我上传电影,尽管它可以很好地清理文件名。我还没有找到一个快速解决方案。如果您正在使用Mongoid和GridFS,则carrierwave已经内置了支持。
最终,我选择了Paperclip作为我的项目。

1
谢谢,但是我尝试了你的分支,出现了一个错误:在failsafe响应过程中出错:ActionView::Template::Error。ruby-1.9.2-p180/gems/activesupport-3.0.5/lib/active_support/whiny_nil.rb:48:in `method_missing'。 - Guy C

2

0

Dragonfly非常好用。试试看,它可以处理文件和图片。


不确定我是否看到比其他系统更大的优势?我一直在使用carrierwave,似乎工作得非常好。我喜欢代码与模型的分离。 - DJ Forth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接