JRuby + Rails 4 + Mongoid version incompatibility & Performance issues

Hello,

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?

Regards,
Manish

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

On Mon, Apr 21, 2014 at 10:43 PM, Manish Chakravarty

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

On Tue, Apr 22, 2014 at 2:09 PM, Carlos Figueiredo <

On Tue, Apr 22, 2014 at 12:20 PM, Carlos Figueiredo
[email protected] wrote:

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.

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.

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

On Tue, Apr 22, 2014 at 2:33 PM, Carlos Figueiredo <

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

On Tue, Apr 22, 2014 at 12:33 PM, Carlos Figueiredo
[email protected] wrote:

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.