We recently upgraded from JRuby 1.5.6 to 1.7.3 and I've run into an issue that 
I hope someone on this list may be able to shed some light on.  

I am working an a multi-threaded Java application which is built on OSGi.  As 
part of the upgrade to 1.7.3 I now have my jruby-complete.jar running as an 
OSGi bundle and I no longer have to bundle a jruby.jar file in with my OSGi 
bundle that uses JRuby.  I have also switched from using ScriptingContainer to 
OSGiScriptingContainer.

I am also trying to transition from using the THREADSAFE LocalContextScope to 
CONCURRENT as I need a single Ruby runtime but want the receivers associated 
with different threads to be maintained as thread local variables.  

I first ran into JRuby issue JRUBY-6265.  That issue describes an scenario 
where paths that have been added to the ScriptingContainer load path are not  
added to the Ruby runtime load path when LocalContextScope is set to SINGLETON 
(as opposed to SINGLETHREAD).   I found that this is also true when using 
CONCURRENT.  

I have been able to get around this issue by using the work-around described in 
JRUBY-6265 by issuing ScriptingContainer.runScriplet("$: << '/desired/path';");

The next issue I ran into was with the Gem path.  We re-package the 
jruby-complete.jar file with several Ruby gems that our application requires.  
When using THREADSAFE the Gem path is built correctly and JRuby is able to find 
the Gems bundled into the jruby-complete.jar file.  However, when using 
CONCURRENT, the Gems are not found.  

When using THREADSAFE Gem path looks like:

["/opt/application/lib/configuration/org.eclipse.osgi/bundles/3/1/.cp/META-INF/jruby.home/lib/ruby/gems/shared",
 "/.gem/jruby/1.9"]

When using CONCURRENT Gem path looks like:

["classpath:/META-INF/jruby.home/lib/ruby/gems/shared", "/.gem/jruby/1.9"]

Has anyone come across a similar issue?  

Best regards,
Mike
---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to