From: Robert Klemme Date: 2006-12-26T05:00:05+09:00 Subject: Re: class design On 25.12.2006 20:54, Spitfire wrote: > How do I design a class such that it can never be instantiated? Say > for example a class containing static members alone, which requires no > instantiation! You can apply some tactics to make it harder but AFAIK there is no safe way to completely prevent instantiation. Typically something like this will suffice class Foo def self.new(*a,&b) raise "Must not instantiate!" end end irb(main):004:0> Foo.new RuntimeError: Must not instantiate! from (irb):2:in `new' from (irb):4 from :0 Other than that you can also use module Singleton, which is probably better documentation wise: irb(main):005:0> require 'singleton' => true irb(main):006:0> class Bar irb(main):007:1> include Singleton irb(main):008:1> end => Bar irb(main):009:0> Bar.new NoMethodError: private method `new' called for Bar:Class from (irb):9 from :0 Kind regards robert