Initialization using the Singleton design pattern


#1

Hi,

I have a singleton class, as in one that does “include Singleton”. I
want to run a few methods when the instance is created. Usually one
would do that in initialize(), but obviously I can’t do that here. This
is what I’ve thought of but it raises an error which says “super: no
superclass method `instance’”

class SingletonClass < ParentClass
include Singleton

def self.instance
super
# initialization code here
end
end

What am I doing wrong?

Cheers


#2

On 05/01/06, Jonathan L. removed_email_address@domain.invalid wrote:

I have a singleton class, as in one that does “include Singleton”. I
want to run a few methods when the instance is created. Usually one
would do that in initialize(), but obviously I can’t do that here. This
is what I’ve thought of but it raises an error which says “super: no
superclass method `instance’”

Right. Just use #initialize as normal, though.

-austin


#3

On Jan 5, 2006, at 12:19 PM, Jonathan L. wrote:

Hi,

I have a singleton class, as in one that does “include Singleton”. I
want to run a few methods when the instance is created. Usually one
would do that in initialize(), but obviously I can’t do that here.

Why not? The object is still constructed:

require “singleton”
=> true

class JustOne
def initialize
puts “initialize() called”
end
include Singleton
end
=> JustOne

JustOne.instance
initialize() called
=> #JustOne:0x32321c

JustOne.instance
=> #JustOne:0x32321c

James Edward G. II


#4

On Fri, 2006-01-06 at 03:47 +0900, James Edward G. II wrote:

require “singleton”
=> #JustOne:0x32321c

JustOne.instance
=> #JustOne:0x32321c

Okay thanks, I’ve got it sorted now. I had tried using initialize()
previously but I guess I got put off as what I was doing raised an
exception – so I assumed you weren’t supposed to use initialize()
without thinking about it any harder.

Cheers