2012-12-19 59 views
1

我已经部署了我的轨道与资产管道应用启用,像这样的application.rb中文件中:为什么Rails会为所有资产提供404错误?

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

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

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

+1

显示你的nginx的配置和你的application.rb中 – astropanic

回答

0

即使上面的答案很好,这不是我的问题。 Rails正在写作,除了Nginx没有正确配置。我的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; 
    ... 
3

基本上编译和gzip的文件不存在于正确的目录中。

如果您在开发环境中运行,请尝试在config/environments/development.rb中设置config.assets.compile = true。它将在调用时即时生成资产文件。这是坏的生产,因为它会严重影响性能

所以,如果你是在生产环境中尝试运行

rake assets:precompile

1

我最近偶然发现了同样的问题。我假设你正在谈论生产环境。解决的办法是要求链轮再次在application.rb无论是做

require 'sprockets/railtie' 

require 'rails/all' 

这已经失去了,因为我们没有使用整个Rails框架和有利于Mongoid的关闭ActiveRecord的。问题在于,在将Rails更新到新版本时,您可能不会注意到rails/all正在更改其内容。

相关问题