我已经部署了我的轨道与资产管道应用启用,像这样的application.rb中文件中:为什么Rails会为所有资产提供404错误?
# Enable the asset pipeline
config.assets.enabled = true
当我检查,我可以看到文件已经由编译器的public/assets
目录内处理,但当我浏览网站时,浏览器无法解析任何资产。如果我直接访问资产,我会看到Nginx发送的404消息。
有人能告诉我发生了什么事吗?
我已经部署了我的轨道与资产管道应用启用,像这样的application.rb中文件中:为什么Rails会为所有资产提供404错误?
# Enable the asset pipeline
config.assets.enabled = true
当我检查,我可以看到文件已经由编译器的public/assets
目录内处理,但当我浏览网站时,浏览器无法解析任何资产。如果我直接访问资产,我会看到Nginx发送的404消息。
有人能告诉我发生了什么事吗?
即使上面的答案很好,这不是我的问题。 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;
...
基本上编译和gzip的文件不存在于正确的目录中。
如果您在开发环境中运行,请尝试在config/environments/development.rb
中设置config.assets.compile = true
。它将在调用时即时生成资产文件。这是坏的生产,因为它会严重影响性能
所以,如果你是在生产环境中尝试运行
rake assets:precompile
我最近偶然发现了同样的问题。我假设你正在谈论生产环境。解决的办法是要求链轮再次在application.rb
无论是做
require 'sprockets/railtie'
或
require 'rails/all'
这已经失去了,因为我们没有使用整个Rails框架和有利于Mongoid的关闭ActiveRecord的。问题在于,在将Rails更新到新版本时,您可能不会注意到rails/all
正在更改其内容。
显示你的nginx的配置和你的application.rb中 – astropanic