Ruby on rails 管道资产和供应商资产。如何将它们添加到Rails 4中进行预编译?

Ruby on rails 管道资产和供应商资产。如何将它们添加到Rails 4中进行预编译?,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,这令人难以置信地沮丧 我已经在我的供应商资产中添加了一些CSS文件,但我似乎无法让它们被预编译,或者至少无法被我的生产服务器找到 这些文件位于以下位置: /vendor/assets/stylesheets/cssfw/style.css /vendor/assets/stylesheets/cssfw/app.css /vendor/assets/stylesheets/cssfw/plugins.css /vendor/assets/stylesheets/cssfw/custom.css

这令人难以置信地沮丧

我已经在我的供应商资产中添加了一些CSS文件,但我似乎无法让它们被预编译,或者至少无法被我的生产服务器找到

这些文件位于以下位置:

/vendor/assets/stylesheets/cssfw/style.css
/vendor/assets/stylesheets/cssfw/app.css
/vendor/assets/stylesheets/cssfw/plugins.css
/vendor/assets/stylesheets/cssfw/custom.css
它们像这样加载到我的application.css上

*= require cssfw/style.css
和内部style.css

@import url(app.css);
@import url(plugins.css);
@import url(custom.css);
这在我的开发环境中工作得很好(显然),但是在生产中的资产中找不到所有这4个CSS文件

很明显,我遗漏了一些东西,但是什么呢

如果我在production.rb中使用类似的内容:

config.assets.precompile += %w( *.css )
config.assets.compile = true
我收到了大量错误,因为它会遍历/vendor/目录中的每一个样式表。如果我尝试具体化(比如指定style.css),同样的初始错误会持续存在,而且样式也找不到

它们究竟应该如何包括在内?最好,我不想包含所有供应商资产文件,因为我实际使用的只有一小部分,但该文件夹包含大约20个,我还没有配置


我正在ApachePhusionPassenger上使用Rails 4.1.6和Ruby 2.1.0。您应该在production.rb中设置:

config.assets.precompile += %w( *.css )
config.assets.compile = true
和在命令行中使用:

  rake assets:precompile

启动您的服务器之前。

诀窍在于将
@import
更改为
*=require
,因为@import没有遵循资产管道。我仍然不清楚为什么会发生这种情况,但我在style.css中改变了这一点,毕竟它一直在加载

在my application.css中:

*= require cssfw/style # /vendor/cssfw/style.css
在style.css的第一部分:

/*
*= require cssfw/app         # /vendor/cssfw/app.css
*= require cssfw/plugins     # /vendor/cssfw/plugins.css
*= require cssfw/custom      # /vendor/cssfw/custom.css

*= require cssfw/plugins/animate         # /vendor/cssfw/plugins/animate.css
*= require cssfw/plugins/box-shadows     # /vendor/cssfw/plugins/box-shadows.css
*/
这将使Rails在供应商管道中的适当位置查找它们,尽管我被迫实际包括整个路径,减去cssfw。如果我不考虑它,它在开发中工作得很好,但在生产中找不到它们


我没有将任何其他内容移动到application.rb或production.rb,以防您感到奇怪。我认为这可能有一个更为优雅的解决方案,但这一解决方案目前仍然有效。

它们已经设置成这样了。是的,我已经运行了rake资产:precompile。为什么要将它们添加到“供应商”中?改为将其添加到应用程序中。因为它们必须由开发人员更改,而不是由我更改。这不仅仅是一个特定的CSS,还有很多。这是一个框架的一部分。