ruby-on-rails – 在Rails应用程序中放置私有文档的位置?

我有一些模板文件,我想在我的rails应用程序中使用.我想知道给出两个场景的位置(在哪个目录下):

>它们是我的应用程序专用的(只有网站站长可以删除,更改它们)
>它们是我的应用程序的私有,但它们也可以由管理员管理(删除,修改)

解决方法

评论后更新

由于您希望在本地提供文件,只需将它们放在/ public /文件夹之外,并放在任何/ assets /文件夹之外,您应该很好.您可以在此处阅读有关公共和资产文件夹的更多信息:Section 2 How to use the Asset Pipeline让我们说:

/private/

我相信在我原来的答案中链接的SO问题中使用的Section 11 send_file仍然是通过控制器而不是静态提供文件访问的方式.改编自文档:

send_file("#{Rails.root}/private/#{filename}",:filename => "#{filename}",:type => "application/pdf",#for example if pdf
          :disposition => 'inline') #send inline instead of attachment

远程服务的原始答案与send_file一起使用

关于1)应用程序私有的文件
您可以将这些私有文件锁定在像Amazon S3这样提供授权访问的系统中,如Callmeed在this SO question中所解释的那样.然后只有您的应用程序才能授权访问文件.

关于2)管理员也可以访问

仅使用第1部分的问题在于它在一段有限的时间内解锁文件,在此期间我认为它们是公开可用的.因此,如果你想解决这个问题,我认为你需要从Pavel Shved的解决方案实际上在上面的相同SO问题中.

在该解决方案中,文件通过路由/控制器提供,该路由/控制器提供文件的二进制数据,而不是使用指向文件的URL.

综合解决方案

从S3读取文件,只有您的应用程序有权访问(不公开).然后直接通过控制器提供数据,控制器可以授权任何人.

注意事项

>直接从控制器提供二进制数据似乎会破坏它的性能应用程序,如果它经常使用,但我从来没有尝试过.>如果您能找到更简单的方法来完成第1部分,第2部分仍然可以使用该解决方案

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...