Well, everybody knows, that there is no locale but C. That’s why all the wrappers bar none use simple Popen3::popen3 calls and then parse the output selfless. For instance whether we are to count the total number of file system blocks, including indirect blocks, used by the files in directory, we would write the following wrapper:

  def get_dir_total dir
    stdin, stdout, stderr = Open3.popen3 "ls -la #{dir}"
    # log the errors or whatever
    stdout.read.split("\n").select { |line| line['total'] }.gsub(/\D/, '')
  end

And this code will pass all the tests. And we’ll put it in production, and for all the colleagues it will work like a charm. Until some trainee from the adjacent department has a bugreport filled. Damn europeans, will probably think we about, reading an email from Łukash Poręba.

Aha. He has likely polished locale set on his laptop. As well as me, having the russian one. Which forces ls to print итого instead of total, breaking so cute-promising code.

So, I have monkeypatched my Popen3 with

  
  cmd.prepend "LC_ALL=C "
  original.popen3 cmd
  

And I would like to ask wrapper-writers “Please, don’t rely on standard locale on target computers.”