Communication between objects

I have been working with Ruby for a few months now and have hit upon
something that I can’t find the answer to: what does the code look like
for passing messages back and forth between objects. Here is a specific
example: In a web application (I am not using ROR) I have a CGI object
and an object whose superclass is Active Record. The CGI object
receives some params from POST and makes them available to the Active
Record object. Not surprisingly, the Active Record object does some
work with a database. Here’s where I am stumped how do I have the
ActiveRecord Object tell the CGI object that it is done working with
the database and the CGI object may now do something else.

I have made a particularly in-elegant work-around by having the ActRec
object set a global variable to something when it is done and follow
this with a conditional that checks to see if that global variable was
set and if it is then the CGI object can proceed. But there has to be a
more direct way to do this. Also, if I wanted to pass things back and
forth between objects this would not work.

I am sure the examples are out there so I must be looking in the wrong
place or trying to call it something it is not.

Thank you. Tod

Tod wrote:

/ …

I am sure the examples are out there so I must be looking in the wrong
place or trying to call it something it is not.

Create a superclass that both objects inherit, and have the superclass
take
responsibility for communication between objects.

Hi –

On Tue, 19 Sep 2006, Tod wrote:

I have made a particularly in-elegant work-around by having the ActRec
object set a global variable to something when it is done and follow
this with a conditional that checks to see if that global variable was
set and if it is then the CGI object can proceed. But there has to be a
more direct way to do this. Also, if I wanted to pass things back and
forth between objects this would not work.

I am sure the examples are out there so I must be looking in the wrong
place or trying to call it something it is not.

I can see what kind of problem you’re trying to solve, but in this
case I can’t seem to see beyond:

ar_object.do_something
cgi_object.do_something_next

which means I’m not seeing how the program is designed. Can you
elaborate? It might even help to see the global variable version, so
that I can see where in the code the two objects are and why they have
to be aware of each other.

David

[email protected] wrote:

to be aware of each other.

David

Here is the part of the code I am interested in:

require ‘cgi’
require ‘rubygems’
require_gem ‘activerecord’

comment_cgi = CGI.new

@article = comment_cgi[‘article’]
@user = comment_cgi[‘user’]
@comment = comment_cgi[‘comment’]

class Comment < ActiveRecord::Base
after_save :redirect

def redirect
	$ok = 'yes'
end

end

new_Comment = Comment.create(
:article_id => @article,
:user_id => @user,
:comment => @comment)

if $ok == ‘yes’
comment_cgi.out {“foo”}
else
comment_cgi.out {“problem.”}
end

So what I am doing here is “after_save :redirect” is setting the global
variable $ok to “yes” if the Comment object was successful in its
dealings with the database. Then the conditional statement turns
control back over to the CGI object allowing it to proceed (ultimately
with a page redirect).

I know I am reinventing the wheel here because Rails make this kind of
thing so easy but I am avoiding Rails at this point so I can really dig
into the Ruby language and understand it.

Thank you. TOD

Observable Pattern?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs