如何在Rails / Nginx环境中的供应商目录中部署静态资产?

时间:2017-07-03 09:04:28

标签: ruby-on-rails nginx amazon-ec2 asset-pipeline

我构建了简单的Rails应用程序,并使用capistrano将其部署在Amazon EC2实例上 它使用了bower安装的一些资产(我使用过bower_components目录),我已将其导入到vendor / assets目录中。
我可以通过添加' bower_components'将它们导入到application.js和application.css中。目录到Rails资产根目录。

Rails.application.config.assets.paths<< Rails.root.join("供应商","资产"," bower_components")

在当地环境中运作良好 但是,我已经将它部署在亚马逊EC2上,来自凉亭的资产尚未加载。 我已经跟踪了问题,这是我的代码:

@import "Ionicons/css/ionicons.css"
@import "animate.css/animate.css"
@import "bootstrap/dist/css/bootstrap.css"
@import "bootstrap-select/dist/css/bootstrap-select.css"
@import "bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.css"
@import "bootstrap-tagsinput/dist/bootstrap-tagsinput.css"
@import "font-awesome/css/font-awesome.css"
@import "ionrangeslider/css/ion.rangeSlider.css"

这是我的application.css.sass 当在本地环境中工作时,它们(bower_components中的样式)可以导入,因为bower_components也是资产的根目录。 在Amazon EC2实例上使用nginx时,资产根目录由nginx配置设置,如下所示:

server {
  listen 80 default_server deferred;
  # server_name example.com;

root /home/ubuntu/apps/datraks/current/public;
access_log /home/ubuntu/apps/datraks/current/log/nginx.access.log;
error_log /home/ubuntu/apps/datraks/current/log/nginx.error.log info;

location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
    root /home/ubuntu/datraks/current/public;
}

nginx只检查应用的资产公共文件夹,因此无法从application.css.sass导入供应商目录中的资产

你想帮助我吗?有没有解决方法可以正确解决这个问题?

0 个答案:

没有答案