From: burdettelamar@... Date: 2019-09-20T18:50:40+00:00 Subject: [ruby-core:95007] [Ruby master Bug#16164] ENV.each with block returns ENV object itself, not Hash Issue #16164 has been updated by burdettelamar@yahoo.com (Burdette Lamar). File diff.txt added I'm attaching a diff that: * Enhances the test to verify the returned object, which is ENV. * Corrects the documentation to say that the returned object is ENV, not a Hash. ---------------------------------------- Bug #16164: ENV.each with block returns ENV object itself, not Hash https://bugs.ruby-lang.org/issues/16164#change-81635 * Author: burdettelamar@yahoo.com (Burdette Lamar) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.6.3p62 (2019-04-16 revision 67580) [x64-mingw32] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- My code: x = ENV.each { |name, value| } puts "Return value class: #{x.class}" puts "Return value is a Hash? #{x.kind_of?(Hash)}" puts "Return value is actually ENV itself? #{x.object_id == ENV.object_id}" Its output: Return value class: Object Return value is a Hash? false Return value is actually ENV itself? true I expected a Hash, because the doc says: each { |name, value| block } ��� Hash There 's some danger here, because if I modify the returned object, I'm actually modifying ENV itself. I think this is also true for a number of other methods in ENV; e.g., ENV.delete_if. ---Files-------------------------------- diff.txt (1.17 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: