【发布时间】:2010-12-14 23:12:30
【问题描述】:
我刚刚升级到 rails3,当我安装常用的 attachment_fu 插件时失败了。所以我开始用谷歌搜索它,虽然我确实找到了 rails3 版本,但似乎有更多人在谈论使用 rails3 的回形针。
那么首先,回形针有哪些优点?
用它对rails3有更好的支持吗?
【问题讨论】:
标签: paperclip attachment-fu ruby-on-rails-3
我刚刚升级到 rails3,当我安装常用的 attachment_fu 插件时失败了。所以我开始用谷歌搜索它,虽然我确实找到了 rails3 版本,但似乎有更多人在谈论使用 rails3 的回形针。
那么首先,回形针有哪些优点?
用它对rails3有更好的支持吗?
【问题讨论】:
标签: paperclip attachment-fu ruby-on-rails-3
两者都没有。使用 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 为我正在进行的项目测试了回形针、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 已内置支持。
最后,我为我的项目使用了回形针。
【讨论】:
如果您想在 Rails 3.2 及更高版本中继续使用它,我已经为 attachment_fu 创建了一个 gem。
【讨论】:
Dragonfly 真的很好。试试看,它可以处理文件和图像。
【讨论】: