[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Complete Serialization Options

Demonic Software

3/3/2008 7:46:00 AM

Is there a way to *completely* serialize objects and move them to
another machien in Ruby? I would like to be able to serialize an entire
object (e.g. all the methods, objects, etc.), then transfer this
serialized object to another interpreter session, which may or may not
be on the same machine, and deserialize the object. The objective I
have in mind is to be able to migrate the object into the other session
and use it as if it was on the instantiated in that session.

I have read about Marshal and YAML, and these two options don't seem to
have that capability. Are these the only two options for serialization
in Ruby?
--
Posted via http://www.ruby-....

3 Answers

Robert Klemme

3/3/2008 9:53:00 AM

0

2008/3/3, Demonic Software <demonic.software@gmail.com>:
> Is there a way to *completely* serialize objects and move them to
> another machien in Ruby? I would like to be able to serialize an entire
> object (e.g. all the methods, objects, etc.), then transfer this
> serialized object to another interpreter session, which may or may not
> be on the same machine, and deserialize the object. The objective I
> have in mind is to be able to migrate the object into the other session
> and use it as if it was on the instantiated in that session.
>
> I have read about Marshal and YAML, and these two options don't seem to
> have that capability. Are these the only two options for serialization
> in Ruby?

AFAIK yes. Note that there is usually no access to code so you would
need to employ some tricks to transfer the code (methods) that is
associated with an instance. Note also that you might introduce
security risks and other sorts of weird behavior by allowing code to
be transferred (just think of different versions of the same class
etc.).

Kind regards

robert

--
use.inject do |as, often| as.you_can - without end

Demonic Software

3/3/2008 2:49:00 PM

0

[Note: parts of this message were removed to make it a legal post.]

Thanks Robert.

I understand the security issues behind what I am doing. I have some
follow-up questions to my previous ones.

Is there a centralized structure that holds all the methods, instance
variables, and then all the ancestor methods, instance variables, etc. For
example, in Python there is self.__dict__, which is basically a hash table
and it holds all the basic structures that make up the object in question.
Now, I know this is not Python, but I was wondering if Ruby had a hash table
or similar object that holds this type of information. Also, is there
something (e.g. a manual, guide, paper ) that discusses the *under-the-hood*
layout and function of Ruby structures once they are created? I am trying
to understand what I can and can not do with the Ruby Language :) Thanks in
advance.

On Mon, Mar 3, 2008 at 3:52 AM, Robert Klemme <shortcutter@googlemail.com>
wrote:

> 2008/3/3, Demonic Software <demonic.software@gmail.com>:
> > Is there a way to *completely* serialize objects and move them to
> > another machien in Ruby? I would like to be able to serialize an
> entire
> > object (e.g. all the methods, objects, etc.), then transfer this
> > serialized object to another interpreter session, which may or may not
> > be on the same machine, and deserialize the object. The objective I
> > have in mind is to be able to migrate the object into the other session
> > and use it as if it was on the instantiated in that session.
> >
> > I have read about Marshal and YAML, and these two options don't seem to
> > have that capability. Are these the only two options for serialization
> > in Ruby?
>
> AFAIK yes. Note that there is usually no access to code so you would
> need to employ some tricks to transfer the code (methods) that is
> associated with an instance. Note also that you might introduce
> security risks and other sorts of weird behavior by allowing code to
> be transferred (just think of different versions of the same class
> etc.).
>
> Kind regards
>
> robert
>
> --
> use.inject do |as, often| as.you_can - without end
>
>

Robert Klemme

3/3/2008 3:43:00 PM

0

2008/3/3, Demonic Software <demonic.software@gmail.com>:
> Is there a centralized structure that holds all the methods, instance
> variables, and then all the ancestor methods, instance variables, etc. For
> example, in Python there is self.__dict__, which is basically a hash table
> and it holds all the basic structures that make up the object in question.

You can access methods via #method etc. but you can never access
method source code in Ruby so I doubt Ruby gives you what you need out
of the box. But there are projects that will parse Ruby source or give
you access to the parsed source (IIRC "parse tree" is one of them).

> Now, I know this is not Python, but I was wondering if Ruby had a hash table
> or similar object that holds this type of information. Also, is there
> something (e.g. a manual, guide, paper ) that discusses the *under-the-hood*
> layout and function of Ruby structures once they are created? I am trying
> to understand what I can and can not do with the Ruby Language :) Thanks in
> advance.

That's probably a good question for ruby-core
http://www.ruby-lang.org/en/community/mailing-lists/...

Also, information about how to code an extension will likely help you.
Sorry, no URL handy here. And then there is of course the source
code which seems quite readable.

Kind regards

robert

--
use.inject do |as, often| as.you_can - without end