Question about classes in Rails

Let me start by stating the fact that I consider myself a ruby / rails
novice (above newb, just enought to be dangerous, perhaps … :slight_smile: )

I have an issue that relates to the ruby-openx gem, which allows ruby
to talk to an OpenX ad-server via XMLRPC, However, I think my problem
is kind of a more basic problem related to Rails, but I am sure it is
also probably due to the way that certain things are implemented in
the gem, so I’m hopeful I can get some basic guidance here on a
problem that has me stumped.

OpenX::Services::Base has a section of code that the other modules /
classes in the openx gem use when they extend this base class to
retrieve the connection to the OpenX server that looks like this:

@@connection = nil

def connection= c
@@connection = c

def connection
unless @@connection and
@@connection =[‘url’])
@@connection.create( configuration[‘username’],

The connection is saved as a class variable, and evidently in Rails,
at least in production mode or when config.cache_classes = true,
classes appear to persist past an initial request so they don’t have
to be reloaded on every request.

The OpenX XMLRPC API expects authenticated sessions to pass back a
session id that is retrieved when you successfully login via the
XMLRPC API. The OpenX::Services::Session class handles this just fine.

However, what ends up happening is that the session times out due to
lack of activity, and the XMLRPC API does not provide a way to tell if
a session is expired or not, so it typically causes 500 internal
server errors in the Rails app that’s trying to communicate with

What I would like to do is basically have a private copy of the openx
classes that exists only during a rails request and do not persist
past the end of the request, independent of the config.cache_classes
setting. I believe this would solve the problem well enough for me to
be able to use as a work-around.

Is it possible to do in Rails what I am asking? I think the reason
this is not an issue with the library as written is that it was not
written with Rails usage in mind, but for usage with either a cron job
or a CLI ruby script instead; however, I have a need for it to operate
properly in a Rails environment.

I’m not keen on either re-writing the gem code, nor am I interested in
keeping the session alive via a cron job, as that’s a hack IMO, and
not a solution.

So, if anyone has any thoughts, I’d love to hear them. Thanks.

The gem’s code can be found at, for
anyone who is curious.

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