当我运行RAILS_ENV =生产rake资产时,Rails 4会生成一个空的manifest.json文件:precompile

时间:2014-02-20 02:16:24

标签: ruby-on-rails ruby-on-rails-4 sass asset-pipeline precompile

在我的临时服务器上,我遇到了一些麻烦。

当我跑步时

RAILS_ENV=production rake assets:precompile

然后

ls public/assets/
manifest-e694d7a3911e13a1b7c31ee3a73ccc9d.json> 

然后

  

$ cat public / assets / manifest-e694d7a3911e13a1b7c31ee3a73ccc9d.json

     

{}

但是,如果我只运行rake资产:precompile(没有RAILS_ENV =生产标志),那么我会将一堆CSS和JS以及我的图像放入public / assets文件夹中。不幸的是,有两个问题:

1).js和.css文件上的指纹(md5哈希)与javascript_include_tag和stylesheet_link_tag自动吐出的内容不匹配

2)在生成的CSS文件中,我看到了对我的静态资产的引用,但它们不包含md5哈希指纹,即使我明确要求它; e.g。

background-image: url(image-path('home/logo.png'));

它只是生成

background-image: url("/assets/home/logo.png"); 

即使生成的文件是,

  

标志-a412c0ad6a034e4da4324436fff2f871.png

相应文件的相关(我认为)位:

这是我的application.rb

config.assets.enabled = true

这是我的development.rb

config.assets.compress = false
config.assets.debug = true

这是我的production.rb

config.serve_static_assets = true
config.assets.compress = true
config.assets.js_compressor = :uglifier
config.assets.compile = true
config.assets.digest = true
config.assets.precompile = true

这是我的nginx conf

server {
  listen       80;
  server_name  staging.mysite.com;

  root /var/www/myuser/current/public;

  # redirect server error pages to the static page /50x.html
  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
      root   html;
  }

  location / {
    proxy_pass http://appname; # match the name of upstream directive which is defined above
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location ~ ^/(assets)/  {
    root /var/www/myuser/current/public;
    gzip_static on; # to serve pre-gzipped version
    expires max;
    add_header Cache-Control public;
  }


}

感谢您的帮助。我现在已经在这里敲了一会儿。如果我应该分享更多信息,请告诉我。

0 个答案:

没有答案