views:

50

answers:

1

I've been having a tough time getting jRuby on Rails 3 deployed on Tomcat 6. I got it to work exactly once.

I modified my database.yaml and Gemfile to check for jRuby, something like this:

if defined?(JRUBY_VERSION)
    gem 'jdbc-mysql'
    #gem 'jdbc-sqlite3'
    gem 'activerecord-jdbc-adapter'
    gem 'activerecord-jdbcmysql-adapter'
    #gem 'activerecord-jdbcsqlite3-adapter'
    gem 'jruby-openssl'
    gem 'jruby-rack'
    gem 'warbler'
else
    gem 'mysql'
    gem "mongrel"
    gem 'ruby-debug'
end

Some environment settings:

$ rvm -v
rvm 1.0.14 

$ jruby -v
jruby 1.5.3 (ruby 1.8.7 patchlevel 249) (2010-09-28 7ca06d7) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_20) [x86_64-java]

When I run jruby -S bundle install everything goes smoothly.

It's when I try to do something like rake db:migrate, jruby -S rake db:migrate or warble that I get 50 DEPRECATION WARNINGs and an eventual stackoverflow.

I solved this issue by deleting the warbler plugin, it did not like the line Warbler::Task.new

Next, I ran warble config to give me a config/warbler.rb file.

And finally, warble to create my .war file. So far so good.

Now I move the .war file to my Tomcat webapps. Everything works fine except for an error:

Oct 10, 2010 1:34:46 AM org.apache.catalina.core.ApplicationContext log
SEVERE: Application Error

org.jruby.rack.RackInitializationException: 
http://github.com/plataformatec/devise.git (at master) is not checked out. 
Please run 'bundle install'

I solved this problem once and only once by going into my webapps/myapp/WEB-INF and running jruby -S bundle install

It no longer works and I have no idea what is going on.

+1  A: 

I believe this can be called a bug in the current version of Warbler. Using git repositories in your Gemfile don't quite get staged properly in the war file and Bundler is still looking for a checked out repository on disk.

A future version of Warbler will probably do something along the lines of bundle --deployment when you create the war file.

For now, to work around, you might have to vendor the devise code.

Nick Sieger
Eliminating the :git directives solved the problems. But I also needed to remove my warble.rb file for some reason.
Dex