我已阅读并尝试过Assets Pipeline指南: http://guides.rubyonrails.org/asset_pipeline.html
...显示如何在手动创建和更新的列表中包含特定文件, - 或 - 包含目录(或目录)的Proc,但随后排除Rails通常包含的所有其他文件。
我想+ =我的文件夹到正常包含的文件。
我已经尝试了答案:
Rails config.assets.precompile setting to process all CSS and JS files in app/assets
What is the purpose of config.assets.precompile?
rails config.assets.precompile for specific sub folder
......最后一个似乎显示了一个解决方案:
config.assets.precompile += ["*external/calendars*"]
我改为:
config.assets.precompile += %w["*javascript*"]
或 config.assets.precompile + = [“ javascript ”] (以及大约20种其他变种。)
...获取我的assets / javascript文件夹。但是目录不包括在内,正如错误“......未预编译”所证明的那样。
第三种方法是给它
config.assets.precompile += %w( *.js )
...哪个有效,但会导致非常非常长的编译,我会假设在任何地方找到它可以发现的每个JS文件。
毋庸置疑,将文件添加到手动更新的列表中并不适合正在进行的应用程序 - 并且丢失任何未知的事情Rails预编译与排他性Proc也不会削减它(但这些是仅有的两个例子)文档)。
是否有一个简单的通配符解决方案“+ - =”一个文件夹 - 或者只是关闭这个'功能',指定我的JS每个视图,并仍然可以在Heroku上工作?
----编辑 - 我看起来越深入越无理性。 本质上,解决方案是“加载Rails在开发模式下找到A-OK的所有东西”。然而这样的选择不存在?
参考预编译行的production.rb文件说:
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
...而application.js有:
//= require_tree .
...所以应该加载该目录下的所有文件 - 但事实并非如此。为什么?我挖得越深,这种感觉越少。
答案 0 :(得分:1)
处理要添加到资产管道的多个CSS / JS文件时,一个好的做法就是为这些文件创建一个新的清单:
假设您在lib/assets/javascripts/external/calendars
下有一些JS文件,并且您希望通过资产管道加载它们。
您想要创建一个包含以下内容的index.js
清单文件:
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require_tree .
这样,由于external/calendars
指令,默认情况下会包含您添加到require_tree .
目录中的所有JS文件。
现在,在app/assets/javascripts/application.js
文件中添加以下行:
//= require calendars
这应该找到你的“日历'清单索引文件”并加载所有相关的JS文件。无需在资产管道中添加任何内容,它只会起作用。