Project

General

Profile

Bug #10209

Updated by nobu (Nobuyoshi Nakada) over 9 years ago

It is possible to change a read_only class attribute: 

 ~~~ruby ~~~ 
 require 'pp' 
 class Attributes 
   attr_reader :string, :array, :hash 
   def initialize 
     @string = 'value' 
     @array = [1, 2, 3, 4] 
     @hash = { name: 'Carlos', age: 25 } 
   end 
 end 

 instance = Attributes.new 
 pp 'Original atributes:' 
 pp '-------------------------' 
 pp instance.string 
 pp instance.array 
 pp instance.hash 
 pp '-------------------------' 

 # bang!! 
 # this should not afect the original atribute. 
 instance.string.gsub!(/.*/, '') 
 instance.array.clear 
 instance.hash.clear 

 pp 'After Hacking attributes:' 
 pp '-------------------------' 
 pp instance.string 
 pp instance.array 
 pp instance.hash 
 pp '-------------------------' 
 ~~~

Back