我正在构建一个 VPS,它是通过 Capistrano、数据库连接等部署的,但是页面没有可用的 Assets - 它只是基本的 html。
Assets 似乎已编译,并存在于 中。共享 目录。
从页面html:
<link href="/assets/application-a1b5d69aeaff709fd3dce163c559b38b.css" media="all" rel="stylesheet" type="text/css" />
<script src="/assets/application-0ebd07089629f8c6880dddfb688d525d.js" type="text/javascript"></script>
Assets 文件似乎存在于 中。共享 目录:
assay@assaypipeline:~/apps/assay/shared/assets$ ls application- a1b5d69aeaff709fd3dce163c559b38b.css
application-a1b5d69aeaff709fd3dce163c559b38b.css
当我查看,来源 然后点击 Assets 路径的超链接,我得到一个 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'
最佳答案
您的预编译 Assets 应位于 public/assets
,见 rails guides
通常你通过运行来创建它们
RAILS_ENV=production bundle exec rake assets:precompile
作为部署的一部分。
共享的东西是通过多次部署提供旧的东西。
另见此 question
关于ruby-on-rails - Capistrano 部署后 Rails Assets 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17720253/