1

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

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

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

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

4

3 回答 3

3

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

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

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

rake assets:precompile

于 2012-12-19T08:03:11.317 回答
1

我最近偶然发现了同样的问题。我假设您在谈论生产环境。application.rb解决方案是通过这样做再次要求链轮

require 'sprockets/railtie'

或者

require 'rails/all'

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

于 2012-12-19T08:05:20.617 回答
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;
  ...
于 2012-12-19T22:09:54.087 回答