我在application.rb文件中部署了我的rails应用程序,启用了Asset Pipeline:
# Enable the asset pipeline
config.assets.enabled = true
当我检查时,我可以看到文件已由public/assets
目录中的编译器处理,但是当我浏览网站时,浏览器无法解析任何资产。如果我直接访问资产,我将看到Nginx发送的404消息。
有人可以告诉我发生了什么事吗?
答案 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;
...