我有一个动作,它生成一个 PDF 文件并将其保存在 /public/output.pdf 中。
当我设置
config.serve_static_assets = false
找不到这个文件。
怎么了 ?
我有一个动作,它生成一个 PDF 文件并将其保存在 /public/output.pdf 中。
当我设置
config.serve_static_assets = false
找不到这个文件。
怎么了 ?
从文档中:
“config.serve_static_assets 将 Rails 本身配置为提供静态资产。默认为 true,但在生产环境中关闭,因为用于运行应用程序的服务器软件(例如 Nginx 或 Apache)应该提供静态资产。与默认设置不同在运行(绝对不推荐!)或使用 WEBrick 在生产模式下测试您的应用程序时,这是真的。否则,您将无法使用页面缓存,并且对公共目录下定期存在的文件的请求无论如何都会影响您的 Rails 应用程序。
这意味着如果您将其设置为 false,Rails 将不会从您的公用文件夹中提供任何资产,因为它假定前端 Web 服务器 (apache/nginx) 将处理它。这吸取了 Rails 上的负载,因为前端服务器在直接提供文件时效率要高得多。
经过测试,我得出了这样的结论:
1) 使用命令时
rails s -e production
Rails 只会提供静态文件。编译资产后创建的任何其他文件都不会被发现。
要处理这个问题,您需要在 Apache、Nginx 或其他 Web 服务器下执行您的应用程序。这些网络服务器将为您提供这些文件。
这看起来很明显,但不适合初学者。