[ANN] ruby-pg for JRuby

Hi everyone,

Sorry for the double post. I posted this earlier to the announcements
mailing list, but didn’t get any feedback. So I’m posting here in the
users
mailing list hoping to get more audience.

Some of you might have come across the JRuby friendly ruby-pg gem
GitHub - headius/jruby-pg: A JRuby version of the "pg" gem.. Unfortunately I started this work
more
than a year ago. I didn’t have time to fix the issues that were reported
or
keep it up to date with the ruby-pg gem. Recently, I got some leisure
time
and rewrote a big chunk of the gem to make it compatible with 0.17.1.
I’ve
tested the gem with JRuby 1.7.18 and all the tests pass. The active
record
(v3.2.21) tests pass as well.

That makes confident to release the gem, may be a release candidate for
now. It looks like the ruby-pg guys are willing to merge the changes in
their repo but it might take a while to do so. I think this gem should
be
released separately for the now. Unless I get any feedback soon, I’ll go
with jruby-pg.

Cheers,

JS

What would be the advantage of this gem vs the JDBC gems?

good question. there are two advantages that i can think of, first is
asynchronous io and second is that jruby-pg is a drop in replacement for
the ruby-pg gem. also afaik the jdbc interface of postgresql has some
limitations regarding large object api and others that i don’t remember
off
the top of my head. granted this isn’t something that everyone needs,
especially new projects, but it was a blocker to switch to jruby for
some
teams in the past.

cheers,

js

Great. Thanks for doing the hard yards!.

Do you have any performance numbers? Will the async IO result in better
performance?

Sorry about the late response. No, I currently don’t have benchmark
numbers
for the current implementation. I’d love to throw a benchmark tool at it
if
one already exists for ruby-pg or rails for example. I’m also not sure
how
the async IO is related to performance. It is a different way of
handling
IO, you can use threads, async IO or some hybrid strategy. Each has it’s
own cons/pros regarding resource usage.

Cheers,

JS