在部署Capistrano之后Rails资产缺失

我正在构build一个VPS,并通过Capistrano,数据库连接等部署,但没有可用的资源页面 – 这是基本的HTML只。

资产似乎被编译,并存在于共享目录中。

从页面html:

<link href="/assets/application-a1b5d69aeaff709fd3dce163c559b38b.css" media="all" rel="stylesheet" type="text/css" /> <script src="/assets/application-0ebd07089629f8c6880dddfb688d525d.js" type="text/javascript"></script> 

资产文件似乎存在于共享目录中:

 assay@assaypipeline:~/apps/assay/shared/assets$ ls application- a1b5d69aeaff709fd3dce163c559b38b.css application-a1b5d69aeaff709fd3dce163c559b38b.css 

当我查看,源 ,然后单击资产path的超链接,我得到一个404 Nginx找不到。

感谢Martin M(接受答案)的帮助。 我从服务器上的〜/ apps /(应用程序名称)/当前目录中执行的步骤。

 $ bundle install $ RAILS_ENV=production bundle exec rake assets:precompile $ sudo service nginx restart 

显然,将这​​个包含在Capistrano食谱中会更好。

* 编辑 – Capfile *

 load 'deploy' load 'deploy/assets' load 'config/deploy' 

您的预编译资产应该驻留在public/assets ,请参阅导轨指南
通常你通过运行创建它们

 RAILS_ENV=production bundle exec rake assets:precompile 

作为部署的一部分。
共享的东西是提供几个部署的旧东西。

另见这个问题

这个问题可能不在资产编制和部署中。 尝试更改nginx root / home / deploy / app_name / public; 到/ home / deploy / app_name / current / public; 在nginx配置文件/ etc / nginx / sites-enabled / default下。

 sudo nano /etc/nginx/sites-enabled/default 

以下是我的配置文件

 upstream app { # Path to Puma SOCK file, as defined previously server unix:/home/deploy/app_name/shared/tmp/sockets/puma.sock fail_timeout=0; } server { listen 80; server_name localhost; root /home/deploy/app_name/current/public; try_files $uri/index.html $uri @app; location / { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Connection ''; proxy_pass http://app; } location ~ ^/(assets|fonts|system)/|favicon.ico|robots.txt { gzip_static on; expires max; add_header Cache-Control public; } error_page 500 502 503 504 /500.html; client_max_body_size 4G; keepalive_timeout 10; } 

希望这可以帮助