JRuby + Rails 4 + Mongoid version incompatibility & Performance issues


I am developing a JRuby on Rails 4 application. I’ve the following in my Gemfile:
gem “mongoid”, “~> 3.1.6”

When I run a bundle update, I get the following:
Resolving dependencies…
Bundler could not find compatible versions for gem “activemodel”:
In Gemfile:
mongoid (~> 3.1.6) java depends on
activemodel (~> 3.2) java

rails (= 4.1.0) java depends on
  activemodel (4.1.0)

When I switch to upstread mongoid via
gem “mongoid”, github: ‘mongoid/mongoid’

a ‘bundle update’ goes through but I am worried about taking this application to production. The upstream github Mongoid driver seems to be 50-100x slower than the Java MongoDB driver.
I have a content ingestion script where I need to repeatedly search for text-matching in an attribute. I’ve created the required indexes to deal speed up the lookups ( there are around 600,000 records, total number of insertions performed during the operation is about 15,000 )
The JRuby + Mongoid takes around 100 hours to complete the operation - I rewrote the script as a Java class and ran it using the Java MongoDB driver and it takes around 30 minutes!

There’s obviously a problem here - I’d like to know if you are using JRuby on Rails in production and if so, what version of Mongoid are you using?


Only Mongoid 4.x supports rails 4.x

I’ve been using mongoid ~> 4.0.0.beta with satisfatory results (on ruby… i didn’t try on jruby yet)

I don’t recommend you get the master branch… if you wanna get directly on github sources, focus a tag

And after all, if you still get problems, is good open an issue on mongoid repository to let them track the problem and resolve if possible.

Best regards,

Carlos Figueiredo

And something i forgot…

Mongoid only supports jruby on ruby-1.9 mode… I’m not sure if monoid-4.x already supports jruby running on ruby-2.0 compatibility mode.

So, make sure you are running jruby on ruby-1.9 mode.

Best regards,

Carlos Figueiredo

If it doesn't work in 2.0 mode that's a problem with jRuby, not with
Mongoid so make sure to cross post tickets to both of them.

jruby on ruby 2.0 mode works with rails 4.x without problems…

i just said that mongoid does not support jruby on ruby-2.0 mode yet… they only test on jruby 1.7.9 with ruby-1.9.3 mode

So… if you open tickets, make sure to open on mongoid repo and for the supported version of jruby… or at least ask them for support ruby-2.0 mode for jruby

Let me reiterate since obviously I wasn't clear enough... If there is
a problem running Mongoid on jRuby, you need to also file the ticket
with jRuby and let them know, because jRuby strives to match MRI 1:1,
which means that if it works in Ruby 2.0.0 and not in jRuby 2.0 mode
then you need to let them know so they can sort it out. Your lack of
wanting to file tickets in a cross-pollinating way like that is why
stupid silly mismatch feature bugs slip through and don't get noticed
until somebody does do that.

Looking mongoid’s travis, I saw that they are testing rails 4.1 but it is not passing yet. (so the master branch you got have bugs not solved yet, maybe that are your problems)

Seeing the dependencies you listed, looks like you are testing rails 4.1… For me, I would wait a bit more before try rails 4.1 on production… or at least using dependencies that I know that are already supported on rails 4.1