Error in canonicalizePath with loading tryResourceFromJarURL
------------------------------------------------------------

                 Key: JRUBY-4875
                 URL: http://jira.codehaus.org/browse/JRUBY-4875
             Project: JRuby
          Issue Type: Bug
          Components: Core Classes/Modules
    Affects Versions: JRuby 1.5.1
         Environment: Man
            Reporter: Garrett Conaty


The error first manifested itself when using Nick Sieger's Warbler with the new 
'gemjar' option.  Effectively loading Ruby classes from embedded JARs within a 
WAR fails because tryResourceFromJarURL calls canonicalizePath which trims too 
much of the filename.

The trouble is here:

String cwd = new File(runtime.getCurrentDirectory()).getCanonicalPath();
            return new File(path).getCanonicalPath()
                                 .substring(cwd.length() + 1)
                                 .replaceAll("\\\\","/");

Basically the runtime.getCurrentDirectory is /jetty/webapps/WEB-INF (WEB-INF is 
used as the RAILS_ROOT/MERB_ROOT), yet the default behavior for 
File(path).getCanonicalPath() would be to use the System property user.dir.  
These don't match.

I've attached both a standalone test case and a patch.  The patch is also 
available on my github fork.

Note that in the patch I just remove the call to canonocalizePath for 2 reasons

1) The path is already in a JAR file my.jar!a/b/c hence it doesn't need to map 
to the underlying FS
2) This method is only called by tryResourceFromJarURL.



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to