ruby-on-rails - Capistrano 部署后 Rails Assets 丢失

标签 ruby-on-rails nginx capistrano asset-pipeline

我正在构建一个 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/

相关文章:

ruby-on-rails - Capistrano和Bundler问题- bundle : not found

ruby-on-rails - 来自 Rails 应用程序的神秘 GET 请求

html - 在 html 表中动态显示哈希数组?

amazon-web-services - Elastic Beanstalk上的HTTPS(Docker多容器)

linux - 如何在亚马逊ec2中共享网络应用程序

rspec - 我应该如何构建一个 Rakefile,其中包含一些需要在部署期间运行的任务,以及一些甚至无法在部署期间定义的任务?

ruby-on-rails - Ruby on Rails 中 Git 版本控制系统中的 SASS 文件管理

ruby-on-rails - 设置Rails请求超时(执行已过期)

ruby-on-rails - Ruby on Rails 路由,如何强制更改子域/域

javascript - 在 NodeJS 身份验证成功后使用 Nginx 提供静态内容