【发布时间】:2023-04-06 23:08:01
【问题描述】:
我正在构建一个 VPS,它通过 Capistrano 进行部署,连接了数据库等,但该页面没有可用的资产 - 它只是基本的 html。
资产似乎已编译,并存在于 shared 目录中。
来自页面html:
<link href="/assets/application-a1b5d69aeaff709fd3dce163c559b38b.css" media="all" rel="stylesheet" type="text/css" />
<script src="/assets/application-0ebd07089629f8c6880dddfb688d525d.js" type="text/javascript"></script>
资产文件似乎存在于 shared 目录中:
assay@assaypipeline:~/apps/assay/shared/assets$ ls application- a1b5d69aeaff709fd3dce163c559b38b.css
application-a1b5d69aeaff709fd3dce163c559b38b.css
当我查看、来源然后单击指向资产路径的超链接时,我得到一个 404 not found from Nginx。
解决方案
感谢 Martin M(已接受答案)的帮助。我采取的步骤,来自服务器上的 ~/apps/(app name)/current 目录。
$ bundle install
$ RAILS_ENV=production bundle exec rake assets:precompile
$ sudo service nginx restart
显然,最好将其包含在 Capistrano 食谱中。
*编辑 - Capfile *
load 'deploy'
load 'deploy/assets'
load 'config/deploy'
【问题讨论】:
标签: ruby-on-rails nginx capistrano asset-pipeline