Избегайте предварительной компиляции активов в Rails (черный список по Regex)

Я видел несколько вопросов/ответов, избегая предварительной компиляции различных активов при использовании конвейера Rails; однако я хочу эффективно выполнять черный список через массив Regex для совпадений по имени пути, чтобы исключить из предварительной компиляции. Чаще всего для меня это часто представляет собой набор партиций, которые в любом случае не будут прекомпиляции.

Ответ 1

Вначале - keithgaputis умело ответил на часть этого здесь, но это не совсем ответ на вышеупомянутый вопрос. Прочитайте и проголосуйте за свой ответ, а затем ознакомьтесь с моими дополнениями ниже:

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) )

сначала исключит элементы, начинающиеся с подчеркивания (это еще не совсем идеальное Regex, игра с рублем), а во-вторых, устранит все, что соответствует черным спискам. Счастливое кодирование!