読者です 読者をやめる 読者になる 読者になる

ar_fixtureのbinary対策

rails

ar_fixtureプラグインは、マルチバイトの文字列をことごとくbase64化してしまうので、とても見づらいものができてしまう。

String#is_binary_data?を上書きするとかの手はあるけど、ここは簡単にコンバーターを。

require 'base64'

b64 = nil
ARGF.each_line do |l|
  if b64
    if l.strip.size.zero? or l =~ /:/
      puts Base64.decode64(b64)
      b64 = nil
      puts l
    else
      b64 << l.strip
    end
  else
    if l =~ /\A(.*)\!binary \|/
      b64 = ''
      STDOUT.write $1
    else
      puts l
    end
  end
end