From: Yusuke ENDOH Date: 2008-09-22T20:42:38+09:00 Subject: [ruby-dev:36465] [feature:1.9] ENV#[]= and nil 遠藤です。 1.8 では ENV["FOO"] = nil は環境変数を消しますが、1.9 ではエラーになり、 不便です。子プロセスを作るときなどで、一時的に環境変数を変えるために env_foo = ENV["FOO"] ENV["FOO"] = "something" system(...) ENV["FOO"] = env_foo で済んでいたところが env_foo = ENV["FOO"] ENV["FOO"] = "something" system(...) if env_foo ENV["FOO"] = env_foo else ENV.delete("FOO") end ととても冗長になります。いろんなソースでこのコードを書く必要があります。 「nil の特別扱いをなくす」という一貫性のために、利便性が犠牲になりすぎ だと思います。 なので、 1. 1.8 の挙動に戻す (ENV だけ nil を特別扱いする) 2. 1.8 の ENV#[]= と同じ挙動をするメソッドを提供する (ENV#assign とか) のどっちかをするのはどうでしょうか。 -- Yusuke ENDOH