discover-unused-partials icon indicating copy to clipboard operation
discover-unused-partials copied to clipboard

Error: invalid byte sequence in UTF-8 (ArgumentError)

Open MatheusRich opened this issue 3 years ago • 1 comments

When I run discover-unused-partials it fails with this error:

/app # discover-unused-partials .
Traceback (most recent call last):
	16: from /usr/local/bundle/bin/discover-unused-partials:23:in `<main>'
	15: from /usr/local/bundle/bin/discover-unused-partials:23:in `load'
	14: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/bin/discover-unused-partials:24:in `<top (required)>'
	13: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:6:in `find'
	12: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:6:in `chdir'
	11: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:6:in `block in find'
	10: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:63:in `used_partials'
	 9: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:63:in `loop'
	 8: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:64:in `block in used_partials'
	 7: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:85:in `process_partials'
	 6: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:85:in `each'
	 5: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:86:in `block in process_partials'
	 4: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:86:in `open'
	 3: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:87:in `block (2 levels) in process_partials'
	 2: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:87:in `each'
	 1: from /usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:88:in `block (3 levels) in process_partials'
/usr/local/bundle/gems/discover-unused-partials-0.3.5/lib/discover-unused-partials.rb:88:in `strip!': invalid byte sequence in UTF-8 (ArgumentError)

MatheusRich avatar Sep 11 '20 16:09 MatheusRich

@MatheusRich

The issue is caused by a line within the files of the specified directory containing a non UTF-8 character. To detect these lines, you can simply place a guard before the call to .strip! like so:

unless line.ascii_only?
  puts "** found **"
  puts file
  puts line
  puts "** end **"
end

After running the script again, you will see which lines contain non UTF-8 characters.

In the case that you legitimately need to have non UTF-8 characters in your views, you can simply add a guard before the call to strip! on /lib/discover-unused-partials.rb:88 like so:

File.open(file) do |f|
  f.each do |line|
    next unless line.ascii_only?

   line.strip!
   ....

pharapeti avatar Feb 16 '21 02:02 pharapeti