【问题标题】:Attachment_fu or Paperclip for Rails3Rails3 的 Attachment_fu 或 Paperclip
【发布时间】:2010-12-14 23:12:30
【问题描述】:

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

那么首先,回形针有哪些优点?

用它对rails3有更好的支持吗?

【问题讨论】:

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


    【解决方案1】:

    两者都没有。使用 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/

    更多信息在这里:

    【讨论】:

    • 好的,感谢您现在正在研究它的建议,看起来很有趣。
    • 是的,Carrierwave 很棒,现在它使用 Fog 库来支持 S3。我强烈推荐它。您还可以使用回形针兼容模式,所以如果您想随时切换到回形针,那真的很容易。
    【解决方案2】:

    我使 attachment_fu rails3 兼容。

    https://github.com/mihael/attachment_fu

    编辑:但是对于某些用户来说它已经损坏了,我不会进一步维护它,所以如果你不想自己破解它,请查看其他解决方案;)

    我使用 rails3.0.3 为我正在进行的项目测试了回形针、carrierwave 和 attachment_fu。

    到目前为止,attachment_fu 和往常一样运行良好,但代码仍需要使用回调系统进行一些重构。它具有云文件、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 后端。有一个为 rails2.3.5 构建的回形针叉(google for paperclip-cloudfiles)(在 github 上搜索 paperclip_demo)。

    Carrierwave 看起来非常漂亮,具有解耦架构,但我不喜欢它不会在更新和销毁对象时删除内容,从而在磁盘上留下一堆文件和目录。基本的载波设置也不允许我上传电影,尽管它可以很好地清理文件名。我还没有找到快速解决这个问题的方法。如果您使用的是 Mongoid 和 GridFS,carrierwave 已内置支持。

    最后,我为我的项目使用了回形针。

    【讨论】:

    • 干杯,但我尝试了你的 fork 并得到一个错误:故障安全响应期间出错:ActionView::Template::Error。 ruby-1.9.2-p180/gems/activesupport-3.0.5/lib/active_support/whiny_nil.rb:48:in `method_missing'
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      Dragonfly 真的很好。试试看,它可以处理文件和图像。

      【讨论】:

      • 不确定我是否看到与其他系统相比的优势?我一直在使用carrierwave,似乎效果很好。我喜欢代码与模型的分离。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      相关资源
      最近更新 更多