From: Clifford Heath Date: 2008-02-12T16:04:57+09:00 Subject: Subclassing Integer; solved! Folk, Refer to for the context. I'm doing some metaprogramming where I wanted folk to be able to subclass Integer, for example: "class Year < Integer; ... end". You can't do this with Integer in a sensible way, because Integers are value types in Ruby, and don't support the new() method. However, I came up with the following cunning bit of code, which seems to work. The code is also here: . I use BasicObject from Facets, which isn't the only way to get that, you might have 1.9 for example :-). Please comment, Clifford Heath. require "facets/basicobject" unless Object.const_defined? :BasicObject class Integer class BoxedInteger < BasicObject private attr_accessor :__value def self.new(*a) super *a end def initialize(v) @__value = v.to_i end def method_missing(meth, *args, &block) __value.send meth, *args, &block end end def self.inherited(subclass) def subclass.new(i) BoxedInteger.new(i) end end end