From: Brian Candler Date: 2010-04-25T18:26:17+09:00 Subject: [ruby-core:29784] [Feature #3200] String#gsub! doesn't error on frozen string Feature #3200: String#gsub! doesn't error on frozen string http://redmine.ruby-lang.org/issues/show/3200 Author: Brian Candler Status: Open, Priority: Low Category: core gsub! does not raise an error on a frozen string unless a change is actually made. e.g. >> s = "a".freeze => "a" >> s.gsub!(/b/,'') => nil But this is inconsistent with other mutating methods on frozen strings, e.g. >> s.squeeze! TypeError: can't modify frozen string from (irb):3:in `squeeze!' from (irb):3 from :0 >> s.tr!('b','c') TypeError: can't modify frozen string from (irb):4:in `tr!' from (irb):4 from :0 Not sure if this unexpected behaviour is "bug" or "feature". The ri documentation of String#gsub! doesn't mention this anomaly. Tested with ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux] from Ubuntu Karmic ---------------------------------------- http://redmine.ruby-lang.org