From: Leslie Viljoen Date: 2008-05-30T00:21:42+09:00 Subject: Surprising Extend Hi people I want to make a library which can extend the String class. I don't want to keep putting the class String; def blah; end; end; at the top of all my files, I just want to require 'StringExt' This doesn't work, after I have 'require'd it into my file: class String def to_hex unpack("C*").map{|b| b.to_s(16)}.join(" ") end end So I tried this: module StringExt def to_hex unpack("C*").map{|b| b.to_s(16)}.join(" ") end end ---- then in my file I put: require 'StringExt'; String.extend StringExt ..but that didn't work. Then I tried: s = "sdfdsfsdfsdF" s.extend StringExt s.to_hex ...but that didn't work. In the Pragmatic Programmer there's an example, but the module is defined in the same file as where it's used - and only the s.extend... version then works. I really want String.extend, to change all strings. How do a 'require' a file that then changes the String class? Les