Issue #13799 has been updated by sylvain.joyeux (Sylvain Joyeux).


Understood. But what about removing 'dup' and 'clone' from ENV altogether ?

The fact that ENV is an object with singleton methods is an implementation detail. ENV is obviously meaningful if there is only one per process, but right now does accept the dup and clone methods. It would be a lot less confusing if the object would refuse being duped or cloned ...

----------------------------------------
Bug #13799: ENV.dup returns a plain Object
https://bugs.ruby-lang.org/issues/13799#change-66144

* Author: sylvain.joyeux (Sylvain Joyeux)
* Status: Rejected
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 2.1.9, 2.2.5, 2.3.3, 2.4.1
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
I was doing ENV.dup to get a copy of the environment that can be modified without affecting ENV. However, ENV.dup returns a plain Object

~~~
irb(main):005:0> ENV.dup
=> #<Object:0x00000002024fc0>
irb(main):006:0> ENV.dup['PATH']
NoMethodError: undefined method `[]' for #<Object:0x000000020446e0>
        from (irb):6
        from /home/doudou/.rbenv/versions/2.4.1/bin/irb:11:in `<main>'
irb(main):007:0> 
~~~

The only way I found to get a copy is Hash[ENV]



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>