这令人非常沮丧。
我已经向我的供应商资产添加了一些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 )
我遇到了大量的错误,因为它会遍历/ vendor /目录中的每个样式表。如果我尝试具体(例如指定style.css),相同的初始错误仍然存在,并且样式无处可寻。
他们应该如何被准确包括在内?最好是,我不想包含所有供应商资产文件,因为我实际上只使用了少量文件,但文件夹大约包含20个左右,我还没有尚未配置。
我在Apache Phusion Passenger上使用Rails 4.1.6和Ruby 2.1.0。
答案 0 :(得分:1)
诀窍在于将@import
更改为*= require
,因为@import不会跟踪资产管道。我仍然不清楚为什么会发生这种情况,但我在style.css中更改了这个,毕竟实际上这些都是在装载的时候。
在我的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,以防你想知道。我认为这可能有一个更优雅的解决方案,但现在可以使用。
答案 1 :(得分:0)
你应该在production.rb中设置:
config.assets.compile = true
并在命令行中使用:
rake assets:precompile
在启动服务器之前。