Issue #11828 has been updated by Daniel P. Clark.


> What does "all singleton instances" mean?

~~~ruby
Object.freeze

Enumerable.singleton_class.tap {def a; end}
# => RuntimeError: can't modify frozen class

Kernel.singleton_class.tap {def a; end}
# => RuntimeError: can't modify frozen class

Enumerator::Lazy.singleton_class.tap {def a; end}
# => RuntimeError: can't modify frozen class
~~~

----------------------------------------
Bug #11828: Object#freeze grid-locks Ruby
https://bugs.ruby-lang.org/issues/11828#change-55623

* Author: Daniel P. Clark
* Status: Feedback
* Priority: Normal
* Assignee: 
* ruby -v: 
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
It seems safe to freeze most any class type in Ruby.  But if you call `Object.freeze` nothing from then on can be created in either class of method form.

Is this okay behavior to have in Ruby?

~~~ruby
Object.freeze

class A
end
# => RuntimeError: can't modify frozen #<Class:Object>

def x
end
# => RuntimeError: can't modify frozen class
~~~

I noticed that Procs can still be defined.

~~~ruby
prc = proc {|a| a+1}

prc.call(4)
# => 5 
~~~


But all singleton instances are frozen.



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