Jam*_*sen 39 yaml assets ruby-on-rails jammit
我正在使用Jammit将资产打包为Rails应用程序,我有一些资产文件,我希望将其包含在几个组中.例如,我希望Sammy及其插件同时包含在我的mobile和screenJS包中.
我试过这个:
sammy: &SAMMY
- public/javascripts/vendor/sammy.js
- public/javascripts/vendor/sammy*.js
mobile:
<<: *SAMMY
- public/javascripts/something_else.js
Run Code Online (Sandbox Code Playgroud)
还有这个:
mobile:
- *SAMMY
Run Code Online (Sandbox Code Playgroud)
但两者都把Sammy JS文件放在嵌套数组中,Jammit无法理解.是否有将Array的元素直接包含在另一个Array中的语法?
注意:我意识到在这种情况下,SAMMYArray 中只有两个元素,因此在每个包中给每个元素一个别名和引用都不会太糟糕.这种情况很好,但是当有五个或十个具有特定加载顺序的元素时,很快就无法维护.
yng*_*gve 26
我所知道的最近的解决方案就是这个:
sammy:
- &SAMMY1
public/javascripts/vendor/sammy.js
- &SAMMY2
public/javascripts/vendor/sammy*.js
mobile:
- *SAMMY1
- *SAMMY2
- public/javascripts/something_else.js
Run Code Online (Sandbox Code Playgroud)
或者,如已建议的那样,将嵌套列表展平在代码段中.
注意:根据yaml-online-parser,你的第一个建议不是<<的有效用法(用于合并两个词典中的键.锚点然后必须指向我相信的另一个词典.
Jes*_*der 19
你的例子是有效的YAML(一个方便的检查位置是YPaste),但它没有定义合并的作用.根据规范,合并键可以具有值:
没有办法合并序列.但是,您可以在代码中执行此操作.使用你的第二个想法中的YAML:
mobile:
- *SAMMY
Run Code Online (Sandbox Code Playgroud)
你会得到嵌套的序列 - 所以压扁它们!假设您有这种嵌套序列的映射:
data = YAML::load(File.open('test.yaml'))
data.each_pair { |key, value| value.flatten! }
Run Code Online (Sandbox Code Playgroud)
(当然,如果你有一个更复杂的YAML文件,并且你不希望每个序列变平(或者它们不是所有序列),你将不得不进行一些过滤.)
sep*_*p2k 17
如果你想要mobile等于sammy,你可以这样做:
mobile: *SAMMY
Run Code Online (Sandbox Code Playgroud)
但是,如果你想要mobile包含除了那些元素之外的其他元素sammy,那么就我所知,在YAML中无法做到这一点.