rails 4启用了rails来提供静态资产:它是否正确? (在heroku上)

时间:2013-07-09 14:22:15

标签: ruby-on-rails heroku ruby-on-rails-4

环境:heroku

Rails:4

Ruby:2

我们向heroku部署了一个应用程序,似乎公共文件夹中的任何内容都无法访问(没有看到静态文件,因此路由器启动然后抱怨没有路由匹配)。

为了解决这个问题,我们设置了

config.serve_static_assets = true

在我们的production.rb文件中。这真的是处理这个问题的最好方法吗?或者我们是否未能正确配置应用程序如何正确托管在heroku上?

4 个答案:

答案 0 :(得分:17)

这在Rails 4.2中已弃用,现在它已成为在Rails 5.0中删除的别名

config.serve_static_assets = true

应该改为:

config.serve_static_files = true

答案 1 :(得分:14)

在以前的Rails版本中,Heroku注入了一个插件,可以提供静态资产,因此这个问题不存在。由于这个插件系统在Rails 4中被移除,他们现在创建了一个同样的宝石。您可以通过以下方式在Gemfile中启用它:

gem 'rails_12factor', group: :production

请参阅Getting Started with Rails 4.x on Heroku

您当然也可以为您的资产使用CDN,但您不需要。

答案 2 :(得分:10)

正如Dean Winchester所提到的那样,将静态资产用于CDN是一个好主意。事实上,当只使用Heroku时,您的Rails应用程序必须负责提供静态资产,因为Heroku Cedar架构不会为您执行此操作。

如果您不想配置CDN并仅使用Heroku,则可以设置config.serve_static_assets = true

答案 3 :(得分:2)

导轨导板错误。尝试...

config.assets.serve_static_files = true