Forum: Ruby on Rails Creating an object from a pp string?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Yanni M. (Guest)
on 2009-01-28 21:27
When I use pp on an object in rails, it prints out a nice string
representation of the object.  I am trying to pass objects from one
server to another and I am wondering if I can just pass this string and
create an object on the other server.  Any libraries/functions out there
that can do this?  Or any other way to do this (not necessarily using
pp).

Thanks!
Philip H. (Guest)
on 2009-01-28 21:34
(Received via mailing list)
> When I use pp on an object in rails, it prints out a nice string
> representation of the object.  I am trying to pass objects from one
> server to another and I am wondering if I can just pass this string
> and
> create an object on the other server.  Any libraries/functions out
> there
> that can do this?  Or any other way to do this (not necessarily using
> pp).

If you really want to go that route you might look at converting it to
YAML... but I'd also suggest looking at JSON, XML, XML-RPC, REST,
active resource, etc...

-philip
Yanni M. (Guest)
on 2009-01-28 21:40
Philip H. wrote:

>
> If you really want to go that route you might look at converting it to
> YAML... but I'd also suggest looking at JSON, XML, XML-RPC, REST,
> active resource, etc...
>
> -philip

Thanks for the quick reply!

Right now I am just creating a pipe-delimited string of the object
attributes.  Then the other server takes that string, splits it on | and
populates a new object.  Really I am just wondering if there is a one
liner from a library where I can do this.  JSON, etc.. would be
overkill, since I can easily do it with a pipe-delimited string.  I
might just code a utility to do this with the pp string unless someone
has some code that already does this.  let me know..  thanks
Philip H. (Guest)
on 2009-01-28 21:46
(Received via mailing list)
> Right now I am just creating a pipe-delimited string of the object
> attributes.  Then the other server takes that string, splits it on |
> and
> populates a new object.  Really I am just wondering if there is a one
> liner from a library where I can do this.  JSON, etc.. would be
> overkill, since I can easily do it with a pipe-delimited string.  I
> might just code a utility to do this with the pp string unless someone
> has some code that already does this.  let me know..  thank

http://www.ruby-doc.org/stdlib/libdoc/yaml/rdoc/cl...
http://www.ruby-doc.org/stdlib/libdoc/yaml/rdoc/cl...
Yanni M. (Guest)
on 2009-01-28 21:49
Philip H. wrote:
>> Right now I am just creating a pipe-delimited string of the object
>> attributes.  Then the other server takes that string, splits it on |
>> and
>> populates a new object.  Really I am just wondering if there is a one
>> liner from a library where I can do this.  JSON, etc.. would be
>> overkill, since I can easily do it with a pipe-delimited string.  I
>> might just code a utility to do this with the pp string unless someone
>> has some code that already does this.  let me know..  thank
>
> http://www.ruby-doc.org/stdlib/libdoc/yaml/rdoc/cl...
> http://www.ruby-doc.org/stdlib/libdoc/yaml/rdoc/cl...

Ah..  you da man.  Thanks, I guess I overlooked that ;-)  That does
exactly what I need it to.
Yanni M. (Guest)
on 2009-01-28 22:34
Here is the full implementation in case anyone is interested.

Server 2 needs to get a widget object from server 1


Server 1 code
--------------
WidgetController
def show_widget_yaml
  @widget = Widget.find(params[:id])
  render  :layout =>  false
end

show_widget_yaml.rhtml
<%=YAML.dump(@product)%>



Server 2 code
------------
def show
  client = HTTPClient.new
  response =
client.get('http://www.server1/widgets/show_widget_yaml'+params[:id])
  yaml_string = response.body.content
  @product = Product.new
  @product = YAML.load(yaml_string)
end
Yanni M. (Guest)
on 2009-01-28 22:37
Yanni M. wrote:
> Here is the full implementation in case anyone is interested.
>
> Server 2 needs to get a widget object from server 1
>
>
> Server 1 code
> --------------
> WidgetController
> def show_widget_yaml
>   @widget = Widget.find(params[:id])
>   render  :layout =>  false
> end
>
> show_widget_yaml.rhtml
> <%=YAML.dump(@product)%>
>
>
>
> Server 2 code
> ------------
> def show
>   client = HTTPClient.new
>   response =
> client.get('http://www.server1/widgets/show_widget_yaml'+params[:id])
>   yaml_string = response.body.content
>   @product = Product.new
>   @product = YAML.load(yaml_string)
> end


Correction..  I forgot to replace some variable names from my own code


Server 1 code
-----------------
 WidgetController
 def show_widget_yaml
   @widget = Widget.find(params[:id])
   render  :layout =>  false
 end

 show_widget_yaml.rhtml
 <%=YAML.dump(@widget)%>



 Server 2 code
 ------------
 def show
   client = HTTPClient.new
   response =
     client.get('http://www.server1/widgets/show_widget_yaml'+params[:id])
   yaml_string = response.body.content
   @widget = Widget.new
   @widget = YAML.load(yaml_string)
 end
This topic is locked and can not be replied to.