【问题标题】:Rails serving files outside assets folder and public folderRails 在资产文件夹和公用文件夹之外提供文件
【发布时间】:2016-11-06 00:33:09
【问题描述】:

Rails 版本:Rails 3.2.15

Ruby 版本: ruby​​ 1.9.3p551(2014-11-13 修订版 48407)

问题:

我的 Rails 应用程序处于开发模式,正在从根级别的 storage 文件夹中提供文件。文件格式为pdf和mp4。

通过服务我的意思是如果我直接点击路线例如:http://localhost:3000/assets/file_name.pdf 没有抛出错误,而是在浏览器上打开。

我想将这些文件置于身份验证之后,因此尝试将其置于 app/assetspublic/ 文件夹之外。

我不确定为什么它能够为这些目录之外的任何文件提供服务。以下是我的一些配置供参考:

config.assets.enabled = true

config.assets.compress = false

config.assets.debug = true

请帮忙...

【问题讨论】:

  • 你所说的“服务”是什么意思?
  • 顺便说一下,您的 Ruby 和 Rails 版本现在都正式不受支持。您可能应该升级。
  • @court3nay:我已经更新了这个问题。我正在使用 assets/file_name.pdf 直接点击 pdf 文件的 url,它正在加载文件。我期待一个错误。
  • @TomLord:谢谢汤姆。从长远来看,升级正在酝酿之中。这不在我的控制范围内。这是一个客户端应用程序。
  • 附带说明:您提到的 Rails 版本已经使用了将近三年,并且存在已知的安全问题。 Rails 3.2 一般不再维护。这意味着您缺少重要的错误修复和安全更新。您可能需要考虑升级到较新的版本。

标签: ruby-on-rails ruby ruby-on-rails-3 asset-pipeline static-files


【解决方案1】:

您必须在资产目录中具有符号链接、管道中的设置、资产管道中的猴子补丁,或者更有可能,或者文件本身存在“资产”控制器或路由。仔细看:)

【讨论】:

    【解决方案2】:

    原来有一些代码在您从 app/assets 访问文件时也将这些代码复制到了 lib/assets。因此,即使在从 app/assets 中删除资产后,它仍在提供来自 lib/assets

    的一些文件

    2.2 资产组织

    管道资产可以放置在应用程序中的以下三个位置之一:app/assets、lib/assets 或 vendor/assets。

    这是关于资产排序和组织的官方文档。

    【讨论】:

      猜你喜欢
      • 2020-08-13
      • 1970-01-01
      • 2012-06-19
      • 2013-12-28
      • 2018-01-29
      • 2023-04-10
      • 2014-05-24
      • 2016-09-07
      • 2021-12-30
      相关资源
      最近更新 更多