[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Marshal::dump and instance of logger

minkoo.seo@gmail.com

4/23/2006 10:11:00 AM

Hi group.

I got a question on Marshal::dump and Logger. I've been used @logger
which contains Logger.new to log message to STDOUT like:

class Foo
def initialize
@logger = Logger.new(STDOUT)
end

def bar
@logger.info(...)
end
end

Unfortunately, Marshal::dump does not allow me to add such instance
variables and raises an error if such one exists.

That being the case, how can I add logger instance to a class w/o
hampering marshalling? Is there any design pattern that I can use?

Sincerely,
Minkoo Seo

1 Answer

ts

4/23/2006 10:23:00 AM

0

>>>>> "M" == Minkoo Seo <minkoo.seo@gmail.com> writes:

M> Unfortunately, Marshal::dump does not allow me to add such instance
M> variables and raises an error if such one exists.

Use #marshal_dump, #marshal_load

moulon% cat b.rb
#!/usr/bin/ruby
require 'logger'
class A
attr_reader :a, :logger

def initialize
@a = 12
@logger = Logger.new(STDOUT)
end

def bar
@logger.info("info")
end

def marshal_dump
@a
end

def marshal_load(x)
@a = x
@logger = Logger.new(STDOUT)
end
end

a = A.new
b = Marshal.load(Marshal.dump(a))
p b.a, b.logger.class
moulon%

moulon% ./b.rb
12
Logger
moulon%

--

Guy Decoux