Complete Serialization Options

  • Thread starter Demonic Software
  • Start date
D

Demonic Software

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?
 
R

Robert Klemme

2008/3/3 said:
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
 
D

Demonic Software

[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.
 
R

Robert Klemme

2008/3/3 said:
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/#ruby-core

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,598
Members
45,152
Latest member
LorettaGur
Top