ruby facter の罠

puppetでも使われてるシステム構成情報をいい感じに取ってくれる rubyのfacterというgemがありますが、なかなかワイルドな人です

* llib/ruby/gems/1.9.1/gems/facter-1.6.8

module Facter

  # 中略

  # Set LANG to force i18n to C
  #
  ENV['LANG'] = 'C'
#!/usr/bin/env ruby

puts ENV["LANG"] # ja_JP.UTF-8

require 'facter'

puts ENV["LANG"] # C

しれっと LANG=C に書き換えてくれます。書き変えた後に元の値に復帰するコードはないぽい。

perl の local 的な挙動を期待したいですね ...