2016-05-29 146 views
0

为了导入我的Sass文件,我使用了sass-rails'(https://github.com/rails/sass-railsglob功能。它说Ruby glob:排除目录和文件

任何有效的红宝石水珠可以使用

我想用@import时要排除的目录和文件。 使用块的任何ruby代码在这种情况下不起作用。但即使试图排除单个文件也不会按我想要的方式工作。

考虑这个树状结构

/_bar.scss 
/_foo.scss 
/all.scss 

比如,我要排除的文件_foo.scss。我在这里读到https://stackoverflow.com/a/27707682/228370,使用!你可以否定一个模式。

我试过如下:

Dir["{[!_foo]}*.scss"] 
=> ["all.scss"] 

但这跳过_bar.scss。当寻找到红宝石的水珠参考(http://ruby-doc.org/core-2.2.0/Dir.html#method-c-glob)变得清楚为什么:

[组] 匹配在集合中的任何一个字符。行为与Regexp中的字符集完全相同,包括集合否定([^ a-z])。

(显然,否定可以用!^实现),因为我们有我们的方式下划线,用下划线每个文件都被排除在外。

但是排除固定文件的解决方案是什么?

回答

0

这可能是一种正则表达方式。但如果你正在谈论一个特定的文件,它可能会更容易做到:

Dir["*.scss"].reject { |i| i == '_foo.scss' } 
+0

因为我需要这个内部sass以及'@ import',这是行不通的。我在我的问题中提到了这一点*任何使用块的ruby代码在这种情况下不起作用* – 23tux