From: naruse@... Date: 2015-11-11T13:34:44+00:00 Subject: [ruby-dev:49341] [Ruby trunk - Bug #11677] 52530の変更により、sprintfの引数のhashにkeyが存在していてもvalueがnilのときにKeyErrorがでるようになってしまった。 Issue #11677 has been updated by Yui NARUSE. Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: DONTNEED ---------------------------------------- Bug #11677: 52530の変更により、sprintfの引数のhashにkeyが存在していてもvalueがnilのときにKeyErrorがでるようになってしまった。 https://bugs.ruby-lang.org/issues/11677#change-54822 * Author: Kaneko Yuichiro * Status: Closed * Priority: Normal * Assignee: * ruby -v: ruby 2.3.0dev (trunk 52534) [x86_64-darwin14] * Backport: 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: DONTNEED ---------------------------------------- ```ruby def test_named_with_nil h = { key: nil, key2: "key2_val" } assert_equal("key is , key2 is key2_val", "key is %{key}, key2 is %{key2}" % h) end ``` のようなテストが2.2.3では通るのですが、trunkでは ```ruby KeyError: key{key} not found ``` となります。 ```ruby "a.hoge is %{a}, b.fuga is %{b}" % { a: a.hoge, b: b.fuga } ``` のように書きたいときにvalueがnilでないことのチェックする必要がでるため、 今まで通りkeyが存在するときは例外が発生しないように修正したいです。 ---Files-------------------------------- 0001-Not-raise-KeyError-when-an-arg-hash-of-sprintf-has-k.patch (1.44 KB) -- https://bugs.ruby-lang.org/