我的应用的/public
目录中的开发模式中有一些可以访问的项目:favicon.ico
,robots.txt
。
我可以在开发过程中查看这些内容。 localhost:3000/favicon.ico
。但是,当我推进生产时,资产在这些路径上是不可见的。因此,我没有favicon图标,谷歌也无法找到我的robots.txt文件。
如何解决此问题,以便可以通过相关网址访问/public
目录?
答案 0 :(得分:14)
在app/config/environments/production.rb
config.serve_static_assets = true
以下是Rails指南所说的内容
config.serve_static_assets将Rails配置为静态服务 资产。默认为true,但在生产环境中已转为 用作运行的服务器软件(例如Nginx或Apache) 应用程序应该提供静态资产。与默认值不同 设置运行时设置为true(绝对不推荐!)或 使用WEBrick在生产模式下测试您的应用程序。否则你不会 能够使用页面缓存和对经常存在的文件的请求 无论如何,在公共目录下都会点击你的Rails应用程序。
答案 1 :(得分:12)
在app/config/environments/production.rb
config.public_file_server.enabled = true
config/environments/production.rb
包含以下行:
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
这意味着您可以在启动rails服务器时在命令行中传递RAILS_SERVE_STATIC_FILES
,例如:
RAILS_ENV=production RAILS_SERVE_STATIC_FILES=yes rails s -b 0.0.0.0 -p 3000