Mik*_*ike 29 ruby-on-rails heroku ruby-on-rails-4
环境:heroku
Rails:4
Ruby:2
我们向heroku部署了一个应用程序,似乎公共文件夹中的任何内容都无法访问(没有看到静态文件,所以路由器启动然后抱怨没有路由匹配).
为了解决这个问题,我们设定了
# Rails 4 only flag
config.serve_static_assets = true
Run Code Online (Sandbox Code Playgroud)
在我们的production.rb文件中.这真的是处理这个问题的最好方法吗?或者我们是否未能将应用程序配置为如何在heroku上正确托管?
Kar*_*ren 18
这在Rails 4.2中已弃用,现在它是一个在Rails 5.0中被删除的别名
config.serve_static_assets = true
Run Code Online (Sandbox Code Playgroud)
它应该改为:
config.serve_static_files = true
Run Code Online (Sandbox Code Playgroud)
Tom*_*Leu 14
在之前的Rails版本中,Heroku注入了一个插件,可以提供静态资产,因此这个问题不存在.由于这个插件系统在Rails 4中被移除,他们现在创建了一个同样的宝石.您可以通过以下方式在Gemfile中启用它:
gem 'rails_12factor', group: :production
Run Code Online (Sandbox Code Playgroud)
您当然也可以为您的资产使用CDN,但您不需要.
Pie*_*ois 10
正如Dean Winchester所提到的那样,将CDN用于静态资产是一个好主意.事实上,当仅使用Heroku时,您的Rails应用程序必须负责提供静态资产,因为Heroku Cedar架构不会为您执行此操作.
config.serve_static_assets = true如果您不想配置CDN并仅使用Heroku,则可以设置设置.