Initialization using the Singleton design pattern

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

···

--
Jonathan Leighton
http://turnipspatch.com/ | http://jonathanleighton.com/ | http://digital-proof.org/

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 Gray II

···

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

Right. Just use #initialize as normal, though.

-austin

···

On 05/01/06, Jonathan Leighton <lists@turnipspatch.com> 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'"

--
Austin Ziegler * halostatue@gmail.com
               * Alternate: austin@halostatue.ca

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

···

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

On Jan 5, 2006, at 12:19 PM, Jonathan Leighton 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>

--
Jonathan Leighton
http://turnipspatch.com/ | http://jonathanleighton.com/ | http://digital-proof.org/