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