I’m having growing doubts about Solaris Coolstack tomcat, it has a lot
of
weird timing issues with Jruby. Were seeing an issue where ‘sometimes’
when
you startup tomcat it will give you this error : Rails requires RubyGems
=
. Please install RubyGems and try again: http://rubygems.rubyforge.org .
Without changing any configs or anything in the exploded war, I can
start
the server and sometimes it works and sometimes it won’t start. I even
tried
to move the jruby-complete jar into Tomcat’s common/lib folder so it
would
get loaded before rack. Is there any way that the core Jruby included
files
like rubygems isn’t getting loaded before Rack loads up the boot.rb ?
Guess I’m not the only one seeing stuff like this
http://www.ruby-forum.com/topic/187213
Also we didn’t see this in Jruby 1.2.0 and Rack 0.9.3
Solaris 10, coolstack tomcat5, Jruby 1.3.1, Rack 0.9.4
~Matt
On Thu, Jun 25, 2009 at 12:01 PM, Matthew K.[email protected]
wrote:
Guess I’m not the only one seeing stuff like this
Can't load rubygems from a WAR file - JRuby - Ruby-Forum
Also we didn’t see this in Jruby 1.2.0 and Rack 0.9.3
Solaris 10, coolstack tomcat5, Jruby 1.3.1, Rack 0.9.4
So, rubygems is included inside jruby-complete.jar, but may not
visible if the initial load path is not setup properly. I suspect the
problem is with JRuby-Rack 0.9.4, but I’d have to bisect to be sure.
Do you suspect the problem exists for any Rails app with Tomcat 5 and
JRuby-Rack 0.9.4? Trying to come up with the combination that produces
the error, so I can bisect back to figure out what causes the issue.
At first glance I have a hard time seeing how Solaris could be part of
the equation.
Also, can you try doing “puts *$LOAD_PATH” and “puts ENV[‘GEM_PATH’]”
at the top of config/boot.rb to see what those values are? (You may
also try “$servlet_context.log” instead to force the output to
Tomcat’s catalina.out.
/Nick
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
Yeah first thing thanks for all quick responses
The good or bad
thing, is
it appears to be a bug is 0.9.4, rolling back to 0.9.3 with jruby 1.2 or
1.3.1 seem to work fine. Only downside is here on my OSX workstation it
works fine with either version, so it may only be easy to reproduce on
Solaris Tomcat5. Also here is the debug info you asked for.
LOAD_PATH
file:/reuters/coolstack/tomcat5/common/lib/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8file:/reuters/coolstack/tomcat5/common/lib/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/site_rubyfile:/reuters/coolstack/tomcat5/common/lib/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/1.8file:/reuters/coolstack/tomcat5/common/lib/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/1.8/javalib/ruby/1.8.file:/reuters/coolstack/tomcat5/webapps/something/WEB-INF/lib/jruby-rack-0.9.4.jar!
ENV[‘GEM_PATH’]
/reuters/coolstack/tomcat5/webapps/something/WEB-INF/gems
If this doesn’t give any clues, I’m going to try and pair down a simpler
rails app to see how can I reproduce it.
~Matt
On Thu, Jun 25, 2009 at 2:34 PM, Matthew K.[email protected]
wrote:
Yeah first thing thanks for all quick responses
The good or bad thing, is
it appears to be a bug is 0.9.4, rolling back to 0.9.3 with jruby 1.2 or
1.3.1 seem to work fine. Only downside is here on my OSX workstation it
works fine with either version, so it may only be easy to reproduce on
Solaris Tomcat5. Also here is the debug info you asked for.
LOAD_PATH
file:/reuters/coolstack/tomcat5/common/lib/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8file:/reuters/coolstack/tomcat5/common/lib/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/site_rubyfile:/reuters/coolstack/tomcat5/common/lib/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/1.8file:/reuters/coolstack/tomcat5/common/lib/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/1.8/javalib/ruby/1.8.file:/reuters/coolstack/tomcat5/webapps/something/WEB-INF/lib/jruby-rack-0.9.4.jar!
ENV[‘GEM_PATH’] /reuters/coolstack/tomcat5/webapps/something/WEB-INF/gems
These values seem to be ok – they have the correct RubyGems location
in them
(file:/reuters/coolstack/tomcat5/common/lib/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8).
So then the problem would seem to be that JRuby is unable to read
entries out of that jar file on Solaris? Strange indeed.
Can you show the output of this on Solaris:
java -jar /reuters/coolstack/tomcat5/common/lib/jruby-complete-1.3.1.jar
-e “require ‘rubygems’”
If it shows an exception, then that’s at least narrowing our problem.
If this doesn’t give any clues, I’m going to try and pair down a simpler
rails app to see how can I reproduce it.
Thanks, that would be great. I do have an OpenSolaris VM I can try
stuff in, but I still find it odd that it would work on OS X and not
Solaris. After all, it’s just Java™ (/me moves out of way of lightning
strike).
/Nick
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
Well, that seems to be the root of the problem. Can you file a bug on
this? I’ll see if I can reproduce on Solaris soon.
/Nick
On Thu, Jun 25, 2009 at 3:48 PM, Matthew K.[email protected]
wrote:
from (irb):2:in `require'
On Thu, Jun 25, 2009 at 2:34 PM, Matthew K.[email protected]
ENV[‘GEM_PATH’]
java -jar /reuters/coolstack/tomcat5/common/lib/jruby-complete-1.3.1.jar
strike).
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
Alright I tried to write up a sensible bug report then things just get
wierder, I was able to reproduce it on another box. But the behavior is
more
interesting, on both machines if I run the command from “/” root it
exceptions, but if I run it from another folder like say “/tmp” its all
fine. Same thing happened on both solaris boxes.
First box:
root@ri-dev1 # pwd
/tmp
root@dev1 # java -jar
/reuters/coolstack/tomcat5/webapps/something/WEB-INF/lib/jruby-complete-1.2.0.jar
-e “require ‘rubygems’”
root@dev1 # cd /
root@dev1 # java -jar
/reuters/coolstack/tomcat5/webapps/something/WEB-INF/lib/jruby-complete-1.2.0.jar
-e “require ‘rubygems’”
-e:1:in `require’: no such file to load – rubygems (LoadError)
from -e:1
Second box:
root@-s # pwd
/
root@-s # java -jar
/reuters/coolstack/tomcat5/webapps/something/WEB-INF/lib/jruby-complete-1.3.1.jar
-e “require ‘rubygems’”
-e:1:in `require’: no such file to load – rubygems (LoadError)
from -e:1
root@-s #
root@-s # cd /tmp/
root@-s # java -jar
/reuters/coolstack/tomcat5/webapps/something/WEB-INF/lib/jruby-complete-1.3.1.jar
-e “require ‘rubygems’”
root@-s #
Perhaps it can’t create temp files if you run from root, no idea ;/
root@-s # java -jar
/reuters/coolstack/tomcat5/common/lib/jruby-complete-1.3.1.jar -e
“require
‘rubygems’”
-e:1:in `require’: no such file to load – rubygems (LoadError)
from -e:1
root@-s # java -jar
/reuters/coolstack/tomcat5/common/lib/jruby-complete-1.3.1.jar --command
irb
irb(main):001:0> require ‘rubygems’
LoadError: no such file to load – rubygems
from (irb):2:in `require’
from (irb):2
irb(main):002:0> exit
root@-s # java -version
java version “1.6.0_01”
Java™ SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot™ Server VM (build 1.6.0_01-b06, mixed mode)
UGH, that doesn’t make sense, that runs fine on OSX 
~Matt