Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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 如何在rails中为非静态文件提供服务_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何在rails中为非静态文件提供服务

Ruby on rails 如何在rails中为非静态文件提供服务,ruby-on-rails,Ruby On Rails,我有一个动作,生成一个PDF文件并保存在/public/output.PDF中 当我设定 config.serve_static_assets = false 找不到此文件 怎么了?来自: “config.service\u static\u资产将Rails自身配置为服务于静态 默认为true,但在生产环境中为 关闭作为服务器软件(如Nginx或Apache)用于运行 应用程序应该服务于静态资产,而不是默认的 运行时将此设置为true(绝对不推荐!)或 使用WEBrick在生产模式下测试你的应

我有一个动作,生成一个PDF文件并保存在/public/output.PDF中

当我设定

config.serve_static_assets = false
找不到此文件

怎么了?

来自:

“config.service\u static\u资产将Rails自身配置为服务于静态 默认为true,但在生产环境中为 关闭作为服务器软件(如Nginx或Apache)用于运行 应用程序应该服务于静态资产,而不是默认的 运行时将此设置为true(绝对不推荐!)或 使用WEBrick在生产模式下测试你的应用程序。否则你不会 能够对定期存在的文件使用页面缓存和请求 在公用目录下,您的Rails应用程序将被点击。“


这意味着,如果您将其设置为false,Rails将不会服务于公用文件夹中的任何资产,因为假定前端web服务器(apache/nginx)将处理它。这说明了Rails的负载,因为前端服务器在直接为文件提供服务方面要高效得多。

经过测试,我得出了以下结论:

1) 使用命令时

rails s -e production
Rails只提供静态文件。编译资产后创建的任何其他文件都将找不到

要处理这个问题,您需要在Apache、Nginx或其他web服务器下执行应用程序。这些web服务器将为您提供这些文件


这看起来很明显,但对初学者来说不是这样。

我已经读过这篇文章,但我没有完全理解。事实上,Apache将为我提供这些文件。