Skip to content

Instantly share code, notes, and snippets.

@thermistor
Forked from shedd/assets.rake
Created October 20, 2011 13:55
Show Gist options
  • Star 18 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save thermistor/1301199 to your computer and use it in GitHub Desktop.
Save thermistor/1301199 to your computer and use it in GitHub Desktop.
Check asset encoding for valid UTF-8
namespace :assets do
desc "Check that all assets have valid encoding"
task :check => :environment do
paths = ["app/assets", "lib/assets", "vendor/assets"]
paths.each do |path|
dir_path = Rails.root + path
if File.exists?(dir_path)
dir_files = File.join(dir_path, "**")
Dir.glob(dir_files + "/**.{js,css}").each do |file|
# make sure we're not trying to process a directory
unless File.directory?(file)
# read the file and check its encoding
data = File.read(file)
unless data.valid_encoding?
puts "#{ file } does not have valid encoding!"
end
end
end # end Dir.glob
end #end File.exists
end # end paths.each
end
end
@sandstrom
Copy link

Thanks for the excellent script! Here is a slightly modified version that checks coffee and scss too.

# check that all assets have the correct encoding
# https://gist.github.com/1301199
namespace :assets do

  desc "Check that all assets have valid encoding"
  task  :check => :environment do

    paths = ["app/assets", "lib/assets", "vendor/assets"]
    extensions = ["js", "coffee", "css", "scss"]

    paths.each do |path|
      dir_path = Rails.root + path

      if File.exists?(dir_path)
        dir_files = File.join(dir_path, "**")

        Dir.glob(dir_files + "/**.{#{extensions.join(',')}}").each do |file|

            # make sure we're not trying to process a directory
            unless File.directory?(file)
              # read the file and check its encoding
              data = File.read(file)
              unless data.valid_encoding?
                puts "Invalid encoding: #{ file }"
              else
                puts "Valid: #{ file }"
              end
            end

        end # end Dir.glob

      end #end File.exists
    end # end paths.each

  end

end

@thermistor
Copy link
Author

Thank @shedd, I'll incorporate that in my version though! Cheers.

@a-ayyash
Copy link

a-ayyash commented Jun 1, 2012

thanks a lot

@prodigerati
Copy link

Thanks for sharing!

@stereoscott
Copy link

Does anyone know how I could update this task so that it also checks included gems assets?

@caike
Copy link

caike commented Jun 14, 2013

Thanks!

For the record, after using this rake task to track the files that were not UTF-8, I was able to convert them using recode, as recommended here http://stackoverflow.com/questions/64860/best-way-to-convert-text-files-between-character-sets

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment