为什么Rails会为所有资产提供404错误?

时间:2012-12-19 07:40:12

标签: ruby-on-rails ruby web-applications

我在application.rb文件中部署了我的rails应用程序,启用了Asset Pipeline:

# Enable the asset pipeline
config.assets.enabled = true

当我检查时,我可以看到文件已由public/assets目录中的编译器处理,但是当我浏览网站时,浏览器无法解析任何资产。如果我直接访问资产,我将看到Nginx发送的404消息。

有人可以告诉我发生了什么事吗?

3 个答案:

答案 0 :(得分:3)

基本上,编译和gzip压缩的文件不在右侧目录中。

如果您在开发环境中运行,请尝试在config.assets.compile = true中设置config/environments/development.rb。它会在调用时动态生成资产文件。这对生产不利,因为它会降低性能

因此,如果您在生产环境中尝试运行

rake assets:precompile

答案 1 :(得分:1)

我最近偶然发现了同样的问题。我假设你在谈论生产环境。解决方案是通过执行

application.rb中再次要求链轮
require 'sprockets/railtie'

require 'rails/all'

这已经丢失,因为我们没有使用整个Rails框架并关闭了ActiveRecord以支持Mongoid。缺点是当将Rails更新为更新版本时,您可能不会注意到rails/all正在更改其内容。

答案 2 :(得分:0)

即使上面的答案很好,但这不是我的问题。除了Nginx没有正确配置外,Rails正在写写东西。我的Nginx配置指向主应用程序目录而不是public目录。

原来是这样的:

server {
  server_name wptrends.envato.com;
  root /home/deployer/apps/report/current;
  ...

应该是这样的:

server {
  server_name wptrends.envato.com;
  root /home/deployer/apps/report/current/public;
  ...