ruby-on-rails – Rails二进制流支持

我即将开始一个项目,需要支持大型的二进制文件.我想使用Ruby on Rails作为webapp,但我关心BLOB的支持.根据我对其他语言,框架和数据库的了解,BLOB经常被忽视,因此具有差,难,和/或错误功能.

RoR是否充分发布BLOB?一旦您已经致力于Rails,是否有任何障碍?

BTW:我想使用Postgresql和/或MysqL作为后端数据库.显然,底层数据库中的BLOB支持很重要.目前,我想避免专注于DB的BLOB功能;我对Rails本身的反应更感兴趣.理想情况下,Rails应该从我隐藏数据库的细节,所以我应该可以从一个切换到另一个.如果不是这种情况(即:使用特定DB的Rails有一些问题),请提及它.

更新:此外,我不只是在这里谈论ActiveRecord.我需要处理HTTP端的二进制文件(文件上传有效).这意味着通过Rails访问适当的HTTP头和流.我已经更新了问题标题和描述,以反映这一点.

解决方法

1为attachment_fu

我在我的一个应用程序中使用attachment_fu,并且必须将数据存储在数据库中(因为令人讨厌的原因超出了本Convo的范围).

我发现(BLOG)的(一个)棘手的事情是,你需要一个单独的代码路径来发送数据给用户 – 你不能简单地在文件系统上一个路径,就像你会是一个简简文件.

例如如果您存储头像信息,您不能简单地做:

<%= image_tag @youruser.avatar.path %>

你必须编写一些封装逻辑并使用send_data,例如(以下只是一个例子,附件_fu,实际上你需要干这个)

send_data(@youruser.avatar.current_data,:type => @youruser.avatar.content_type,:filename => @youruser.avatar.filename,:disposition => 'inline' )

不幸的是,据我所知,attachment_fu(我没有最新版本)没有为你做巧妙的包装 – 你必须自己写.

附:看到你的问题编辑 – Attachment_fu处理你提到的所有烦人的东西 – 关于需要知道文件路径和所有的废话 – 除了存储在数据库中的一个小问题.试一试;这是rails应用的标准.如果你坚持重新创造轮子,附件的源代码应该记录大部分的错误

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...