Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 蜻蜓_Ruby On Rails_Ruby_File Upload_Rubygems_Dragonfly Gem - Fatal编程技术网

Ruby on rails 蜻蜓

Ruby on rails 蜻蜓,ruby-on-rails,ruby,file-upload,rubygems,dragonfly-gem,Ruby On Rails,Ruby,File Upload,Rubygems,Dragonfly Gem,我一直在研究rails文件上传工具,对我来说最吸引人和最有趣的工具是carrierwave和dragonfly 环顾四周,carrierwave似乎采用了更传统的风格,您可以在保存时处理文件,而dragonfly是中间件,因此它允许您动态处理文件 我想知道人们是否有任何关于性能测试的参考资料,或者有任何比较这两者的测试 另外,我只是想知道人们对这两种产品的看法是什么,他们喜欢哪一种,当然还有他们喜欢它的原因。我之所以使用蜻蜓点水,仅仅是因为carrierwave已经放弃了对mongomapper

我一直在研究rails文件上传工具,对我来说最吸引人和最有趣的工具是carrierwave和dragonfly

环顾四周,carrierwave似乎采用了更传统的风格,您可以在保存时处理文件,而dragonfly是中间件,因此它允许您动态处理文件

我想知道人们是否有任何关于性能测试的参考资料,或者有任何比较这两者的测试


另外,我只是想知道人们对这两种产品的看法是什么,他们喜欢哪一种,当然还有他们喜欢它的原因。

我之所以使用蜻蜓点水,仅仅是因为carrierwave已经放弃了对mongomapper的支持,而且如果没有一些黑客的帮助,回形针就无法使用mongomapper

蜻蜓在飞行中进行加工,即

是指在一个 缓存代理,如Varnish、Squid或 Rack::Cache,以便在 请求可能需要一段时间,后续 请求应该是超级快速


取决于设置。正如Senthil所写,只要前面有缓存代理,蜻蜓就可以了

但是如果您使用内置的rails缓存,Carrierwave的性能会更好,因为文件可以在不进行任何处理的情况下加载。如果你不做任何处理,那没关系

以下是我在使用Mongomapper的项目中考虑两种图像时的总结:

Carrierwave:

  • 专业人士
    • 上传时生成拇指(节省CPU时间)
    • 可以直接使用静态/缓存文档中的文件
    • 不需要任何缓存
    • 支持各种存储后端(S3、Cloudfiles、GridFS、普通文件),如果需要,可以轻松扩展到新的存储类型
  • 缺点
    • 上传时生成拇指(难以生成新拇指大小)
    • 本机不支持mongomapper
    • 为生成的每个文件/缩略图使用存储空间。如果使用普通文件存储,可能会耗尽索引节点
蜻蜓:

  • 专业人士
    • 应该使用mongomapper,因为它只扩展了ActiveModel
    • 动态生成拇指(更容易创建新布局/拇指大小)
    • 只存储一个文件!节省空间:)
  • 缺点
    • 如果您没有缓存代理、rack::cache或类似工具,则每次请求都会占用CPU
    • 如果需要,无法将拇指作为文件访问
最后我两个都用了

未来的愿望是carrierwave再次支持MongoMapper。在各种情况下使用这两种方法后,我发现MongoMapper(rails3分支)中的功能总是有效的,并且很容易使用插件进行扩展。到目前为止,Mongoid还不能这么说,但这可能会改变。

回形针 回形针旨在作为活动记录的简易文件附件库。它背后的意图是使设置尽可能简单,并尽可能像处理其他属性一样处理文件。这意味着在调用
ActiveRecord::Base#save
之前,它们不会保存到磁盘上的最终位置,如果设置为nil,也不会被删除。如果需要,它会根据大小和状态管理验证。如果需要,它可以将指定的映像转换为缩略图,前提条件与安装ImageMagick一样简单(对于大多数基于Unix的现代系统,安装ImageMagick与安装正确的软件包一样简单)。附加文件保存到文件系统中,并通过易于理解的规范在浏览器中引用,该规范具有合理和有用的默认值

优势
  • 验证,回形针引入了几个验证程序来验证您的附件: AttachmentContentTypeValidator AttachmentPresenceValidator 附件尺寸评估器
  • 删除附件 将属性设置为nil并保存。
    @user.avatar=nil@user.save
  • 回形针更适合使用activerecord的有机Rails环境,而不是所有其他替代品。回形针对于rails初学者来说更容易处理,对于高级开发人员来说,它还具有高级功能
  • 回形针的超级粉丝,因为它不需要RMagick,很容易设置到AmazonS3,并声明模型中的所有内容(验证等)保持整洁
  • 对于多个文件上传和进度反馈,回形针和附件都可以实现,但两者通常都需要一些iframes和Apache的支持才能正常工作
  • 卡里尔瓦夫 这个gem提供了一种从Ruby应用程序上传文件的简单且极其灵活的方法。它与基于框架的web应用程序(如RubyonRails)配合得很好

    优势
  • 简单的模型实体集成。添加单个字符串
    image
    属性以引用上载的图像
  • 上传和远程获取图像的“魔术”模型方法
  • HTML文件上传集成使用标准文件标签和另一个隐藏标签来维护已上传的“缓存”版本
  • 用于创建具有不同尺寸和格式的衍生图像版本的直接界面。图像处理工具很好地隐藏在幕后
  • 用于获取图像的公共URL及其HTML嵌入的调整大小版本的模型方法
  • 如果内置rails缓存,Carrierwave的性能会更好,因为文件可以在不进行任何处理的情况下加载。如果你不做任何处理,那没关系
  • 上传时生成拇指(节省CPU时间)
  • 可以直接使用静态/缓存文档中的文件
  • 不需要任何缓存
  • 支持各种存储后端(S3、Cloudfiles、GridFS、普通文件),如果需要,可以轻松扩展到新的存储类型。 一个事实是,它不会使您的模型与配置混乱。您可以定义上传器类。它允许您轻松地重用、扩展您的上载配置。 我们最喜欢的是这辆车