0
我在使用Rails管道時避免了預編譯各種資產的問題;然而,我想通過一系列Regex來有效地將路徑名匹配的黑名單從預編譯中排除。對我來說,大多數情況下,這通常是一組無法預編譯失敗的部分。避免預編譯Rails中的資產偏好(Regex提供的黑名單)
我在使用Rails管道時避免了預編譯各種資產的問題;然而,我想通過一系列Regex來有效地將路徑名匹配的黑名單從預編譯中排除。對我來說,大多數情況下,這通常是一組無法預編譯失敗的部分。避免預編譯Rails中的資產偏好(Regex提供的黑名單)
首先 - keithgaputis熟練地answered a part of this here,但它不是上述問題的答案。閱讀並投了他的答案,然後看到我的補充,他的下面:
Rails.application.config.assets.precompile << Proc.new { |path|
blacklist = [
/nvd3\/src\/intro.js$/,
/nvd3\/src\/outro.js$/,
/^.*\.less$/,
/admin\/modules/,
/admin\/themes/,
/admin\/responsive\..*css/
]
full_path = Rails.application.assets.resolve(path)#.to_path
puts "path: #{path}\nfull_path: #{full_path}" if BLACK_MAGIC[:assets][:debug]
if (path =~ /(^[^_\/]|\/[^_])[^\/]*$/) and (path !~ Regexp.union(blacklist))
puts "including asset: " + full_path if BLACK_MAGIC[:assets][:debug]
true
else
puts "excluding asset: " + full_path if BLACK_MAGIC[:assets][:debug]
false
end
}
您可以將所有的正則表達式的加入黑名單陣列排阻,然後兩個部分,如果條件
if (path =~ /(^[^_\/]|\/[^_])[^\/]*$/) and (path !~ Regexp.union(blacklist))
將首先消除以下劃線開頭的項目(這還不是一個完美的正則表達式,用rubular玩),其次將排除與黑名單表達式匹配的任何內容。快樂的編碼!