Ruby on rails 如何在Rails/Nginx env上的供应商目录中部署静态资产?

Ruby on rails 如何在Rails/Nginx env上的供应商目录中部署静态资产?,ruby-on-rails,nginx,amazon-ec2,asset-pipeline,Ruby On Rails,Nginx,Amazon Ec2,Asset Pipeline,我已经构建了简单的Rails应用程序,并使用capistrano将其部署在Amazon EC2实例上。 它使用的是bower安装的一些资产(我使用了bower_components目录),我已将其导入供应商/资产目录中。 我可以将它们导入application.js和application.css,方法是将“bower\u components”目录添加到Rails资源根目录 Rails.application.config.assets.path您在部署后是否尝试运行了rake-assets:

我已经构建了简单的Rails应用程序,并使用capistrano将其部署在Amazon EC2实例上。
它使用的是bower安装的一些资产(我使用了bower_components目录),我已将其导入供应商/资产目录中。
我可以将它们导入application.js和application.css,方法是将“bower\u components”目录添加到Rails资源根目录


Rails.application.config.assets.path您在部署后是否尝试运行了
rake-assets:precompile
?我认为您不了解这是如何工作的。资产编译将
application.css.sass
包含的所有文件编译成一个文件
Rails.application.config.assets.path
只是告诉Rails在哪里查找文件名。然后,所有编译后的文件都放在
公共/资产
中,这就是Nginx提供这些文件的地方。如果您仔细阅读capistrano输出,它就在那里!迈克·辛德尔-谢谢你的帮助。当然,我知道资产预编译是如何工作的。但这只是个问题——我是通过“@import”而不是“require”导入资产的。您知道在这种情况下如何预编译application.css.sass吗?然后样式不会直接导入application.css文件中-尽管application.css已预编译,但仍保留“@import”本身。如果您愿意,我将附上预编译的application.css.scss。Oleg Sobchuk-谢谢您的回复。当然,我运行了“rakeassets:precompile”——它是作为capistrano部署过程的一项任务完成的。资产已正确预编译。您是否尝试在部署后运行
rake Assets:precompile
?我认为您不了解这是如何工作的。资产编译将
application.css.sass
包含的所有文件编译成一个文件
Rails.application.config.assets.path
只是告诉Rails在哪里查找文件名。然后,所有编译后的文件都放在
公共/资产
中,这就是Nginx提供这些文件的地方。如果您仔细阅读capistrano输出,它就在那里!迈克·辛德尔-谢谢你的帮助。当然,我知道资产预编译是如何工作的。但这只是个问题——我是通过“@import”而不是“require”导入资产的。您知道在这种情况下如何预编译application.css.sass吗?然后样式不会直接导入application.css文件中-尽管application.css已预编译,但仍保留“@import”本身。如果您愿意,我将附上预编译的application.css.scss。Oleg Sobchuk-谢谢您的回复。当然,我运行了“rakeassets:precompile”——它是作为capistrano部署过程的一项任务完成的。资产已正确预编译。
@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"
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;
}