2013-07-18 10 views
5

VPSを構築していて、Capistrano、データベース接続などでデプロイされていますが、そのページで使用できる資産はありません。Capistranoをデプロイした後でRails資産が失われる

資産はコンパイルされて表示され、共有ディレクトリに存在します。ページのHTMLからの

:アセットファイルがに存在するように見える

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

ディレクトリを共有:

私は、 ビュー、ソースとにハイパーリンクをクリック
[email protected]:~/apps/assay/shared/assets$ ls application- a1b5d69aeaff709fd3dce163c559b38b.css 
application-a1b5d69aeaff709fd3dce163c559b38b.css 

資産パス、私は404をNginxから見つかりません。助けのためのマーティン・M(受け入れ答え)へ

SOLUTION

感謝。 〜/ apps /(app name)/サーバーの現在のディレクトリから、私が取った手順。

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

明らかに、これをCapistranoのレシピに含める方が良いでしょう。

* EDIT - Capfile *

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

答えて

4

あなたのプリコンパイルされた資産はrails guides
通常、あなたの展開の一部として

RAILS_ENV=production bundle exec rake assets:precompile 

を実行して、それらを作成するを参照してください、public/assetsに配置する必要があります。
共有されているものは、複数のデプロイで古いものを提供することです。

も参照してください。このquestion

+0

感謝をお役に立てば幸いです。プリコンパイルを開発マシンまたは本番サーバーで実行する必要がありますか? Cap展開にこれを含める方法がいくつかありますか? – ardochhigh

+0

"標準的な"方法は 'Capfile'の' load 'deploy/assets''行をアクティブにすることです。これは、すべてのデプロイ時にサーバー上で 'precompile'を実行します。 –

+0

私はそれを持っています。私は上記の私のcapfileを追加しました。 – ardochhigh

4

問題は、資産のコンパイルおよび展開ではないかもしれません。 nginxルート/ home/deploy/app_name/publicを変更してみてください。/home/deploy/app_name/current/publicに移動します。 nginx設定ファイル/ 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; 
} 

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

が、これはあなたの答えのために

+0

素晴らしい!それが問題でした。 – loxosceles

関連する問題