Hi, I’m using JRuby 1.5.6 on Rails to build myself an application that
will periodically go away and retrieve any RSS podcasts that I have
subscribed too.
I’ve chosen JRuby primarily because I’m familiar with Java, wish to
utilise the Rails framework and most importantly I’m able to perform the
“heavy lifting” tasks in Java when Ruby falls short of my requirements.
Up to now (and I’m still in the early stages of development) this hybrid
approach has been working extremely well.
I’m now at a point where I’m needed to implement scheduling of periodic
and long running tasks to a background process. My requirements are to
have a database backed scheduling system that is, ideally, well
documented, currently maintained and clean.
My problem now is that after many days of researching suitable off the
self gem packaged solutions, I appear to be left with very few options
because of my use of JRuby.
Some of the gems I’ve tried…
rufus scheduler
Having used this before I’m happy with it’s interface and documentation,
however there is a lack of database persistence, hence a deal breaker
for my requirements.
delayed_job
My ideal solution would be delayed_job. Good documentation, still being
maintained and database backed, however, breaks under JRuby due to
ObjectSpace being turn off (we can however fix this by re-enabling) but
more fatally the dependence on the daemons gem which throws a “fork is
unsafe and disabled by default on JRuby” error due to limitations within
the JRuby implementation.
There is a fork on github that doesn’t have a dependence on daemons,
however I’m not happy switching to a fork off the main development
branch and I’m still left with the ObjectSpace issue which I’m unsure as
to it’s performance impact.
quartz-jruby
While there have been various quartz based gems before, this very recent
offering (GitHub - artha42/quartz-jruby: A better quartz gem for jruby) is another attempt at
providing a slick ruby-like interface. There is however minimal
documentation and I’m unsure as to if this can be database backed, my
gut feeling is that it is not.
The problem
While I’ve only highlighted 3 options here, I’m aware that there are
others available. I’ve however not been able to find a solution to tick
all 3 requirement boxes (docs, maintained, database backed).
So the questions are…
Has anyone else been in this situation and come up with a solution?
Has anyone managed to get delayed_job working in whatever form?
Are there any better solutions out there that I’ve overlooked and will
satisfy my needs?