Rails3的Attachment_fu或Paperclip

时间:2010-12-14 23:12:30

标签: paperclip attachment-fu ruby-on-rails-3

我刚刚升级到rails3,当我安装了我常用的attachment_fu插件失败时。所以我开始搜索它,虽然我确实找到了一个rails3版本,似乎有更多人在谈论带有rails3的回形针。

首先,回形针的优点是什么?

对rails3有更好的支持吗?

4 个答案:

答案 0 :(得分:12)

都不是。使用carrierwave

  

为了处理文件上传,我已经从Paperclip切换到CarrierWave。虽然Paperclip已经(并且继续)在我合作的许多应用程序中很好地为我服务,但我非常欣赏CarrierWave采用的模块化方法。它与您使用哪种流行的S3客户端无关,支持aws / s3和right_aws。它也是ORM不可知的,并没有与Active Record紧密耦合。 Paperclip的紧密耦合使我们在工作中感到悲伤,而且我也对Paperclip对aws / s3和right_aws的支持状态感到困惑。所以,我很高兴找到这个新项目,维护者乔纳斯尼克拉斯似乎是一个非常敏感和乐于助人的家伙,这总是好事。代码看起来很棒,到目前为止我已经很容易使用这个库了。 (来自:http://trevorturk.com/2010/2/8/kzak-an-open-source-web-based-jukebox/

更多信息:

答案 1 :(得分: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的后端。有一个回形针(google for paperclip-cloudfiles),它是为rails2.3.5(为paperclip_demo搜索github)而构建的。

Carrierwave 看起来很漂亮,具有解耦的架构,但我不喜欢它不删除更新和破坏对象的东西,在磁盘上留下一堆文件和目录。基本的载波设置也没有让我上传电影,虽然它很好地消毒了文件名。我还没有找到快速解决方案。如果你使用的是Mongoid和GridFS,那么carrierwave已经内置了支持。

最后,我把Paperclip用于我的项目。

答案 2 :(得分:2)

如果你想在Rails 3.2及更高版本中继续使用它,我已经为attachment_fu创建了一个gem。

https://rubygems.org/gems/pothoven-attachment_fu

答案 3 :(得分:0)

Dragonfly非常好。尝试一下,它可以处理文件和图像。