Ruby on rails Rails 5-如何在资产管道中包含所有供应商资产?

Ruby on rails Rails 5-如何在资产管道中包含所有供应商资产?,ruby-on-rails,ruby-on-rails-5,asset-pipeline,vendor,Ruby On Rails,Ruby On Rails 5,Asset Pipeline,Vendor,我在vendor/assets目录中找到了几个不同的包含资产的线程,但没有找到任何适合我的线程。以前,我的所有供应商资产都在app/目录中,但将JavaScript移动到vendor/assets/javascripts/目录,将CSS移动到vendor/assets/stylesheets/目录 我现在尝试在开发和生产中加载我的供应商资产,但它们根本没有加载。这是我的assets.rb文件: # Be sure to restart your server when you modify th

我在
vendor/assets
目录中找到了几个不同的包含资产的线程,但没有找到任何适合我的线程。以前,我的所有供应商资产都在
app/
目录中,但将JavaScript移动到
vendor/assets/javascripts/
目录,将CSS移动到
vendor/assets/stylesheets/
目录

我现在尝试在开发和生产中加载我的供应商资产,但它们根本没有加载。这是我的
assets.rb
文件:

# Be sure to restart your server when you modify this file.

# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = '1.0'

# Add additional assets to the asset load path
# Rails.application.config.assets.paths << Emoji.images_path

# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
Rails.application.config.assets.precompile += [
  Rails.root.join('vendor/assets/javascripts/*').to_s,
  Rails.root.join('vendor/assets/stylesheets/*').to_s
]

但是,我使用的是Sass,仍然无法加载SCSS文件。

记住Rails资产加载路径和链轮是不同的系统后,我终于找到了答案。以下是我所做的:

config/initializes/assets.rb
中,我添加了以下几行:

# Add additional assets to the asset load path
Rails.application.config.assets.paths += [
  Rails.root.join('vendor', 'assets').to_s
]

# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
Rails.application.config.assets.precompile += [
  Rails.root.join('vendor/assets/javascripts/*').to_s,
  Rails.root.join('vendor/assets/stylesheets/*').to_s
]
第一个块将供应商资产添加到Rails资产路径。这允许我在视图帮助程序中使用供应商资产(例如:
image\u标记
)。第二个块允许我的供应商JavaScript和CSS与我的其余资产进行预编译

然后,我在
/=require\u树上方的
app/assets/javascripts/application.js中添加了以下行:

//= require_tree ../../../vendor/assets/javascripts/.
这将自动将我放入
vendor/assets/javascripts
中的所有JavaScript文件添加到我的应用程序中

对于Sass,我在app/assets/stylesheets/application.Sass中添加了以下内容:

@import "../../../vendor/assets/stylesheets/*";
我在
@import“*”之前添加了这一行以便优先选择我自己的应用程序的样式。这将包括我的应用程序中的所有供应商Sass文件。然后我重命名了我所有的供应商
.css
文件,以使用
.scss
扩展名


既然开发工作正常,我就担心预编译了。我在本地运行了
rails资产:precompile
,果然,我所有的供应商资产都包括在内了

添加这些行时是否重新启动了服务器?您应该像这样添加文件夹:
config.assets.path@Waclock谢谢您的评论。我确实重新启动了我的服务器,而且以这种方式添加文件夹也没有起作用。
@import "../../../vendor/assets/stylesheets/*";