« Return to Thread: Routing problem with JRuby/Rails

Re: Routing problem with JRuby/Rails

by Daniel Hahn-3 :: Rate this Message:

Reply to Author | View in Thread

Hi,

I was out of office yesterday afternoon. In any case, I don't have a  
test case but I can give a reasonably easy way to reproduce this. But  
is issue JRUBY-2519 (filed yesterday) already about this?

Ciao,
                Daniel


Il giorno 14/mag/08, alle ore 15:32, Vladimir Sizikov ha scritto:

> Hi Daniel,
>
> Great analysis! Could you please submit a jira issue for that, with
> some minimized example that shows the differences between MRI and
> JRuby (otherwise, I'm not fully sure that I properly understand the
> test case from your description).
>
> Once we have the test, the fix should be (hopefully) simple. And, we
> could put the test case  into rubyspecs too.
>
> Thanks,
>  --Vladimir
>
> On Wed, May 14, 2008 at 11:55 AM, Daniel Hahn <hahn@...>  
> wrote:
>> Hi everyone,
>>
>> I just got started on JRuby, and tried to run our Rails application  
>> with it.
>> I ran into a problem, which I debbugged (see description below) -  
>> however
>> I'm not quite sure what to do with it. The root cause is rails  
>> assuming a
>> particular quirk of the Dir[...] method, which JRuby doesn't  
>> replicate. So I
>> have monkeypatched my Rails for now, but I'm not sure if this  
>> should be
>> "fixed" in JRuby or taken to Rails...
>>
>> Problem description:
>>
>> JRuby interferes with routing where there is the following  
>> arrangement of
>> controllers
>>
>>   * something_controller.rb
>>   * something/ +- sub_controller.rb
>>
>> this will not correctly match the 'something/sub' controller. The  
>> reason
>> being:
>>
>>   * The Route#recognize method will engage in creating meta-methods  
>> that
>> match against regular expressions. (From Route#write_recognition)
>>   * For the default route, this will eventually land in
>> ControllerSegment#regexp_chunk?
>>   * This will query Routing#possible_controllers
>>   * This method will collect the file paths from the controllers,  
>> using
>> Dir.../**/*_controller.rb"
>>
>> The controllers are then put into the regular expression.
>>
>> For MRI, the Dir method reports files in subdirectories first. The  
>> JRuby
>> implementation does not.
>>
>> As a result the 'something' is put into the regexp first, and
>> 'something/sub' is matched as (something)/(sub). For MRI,  
>> 'something/sub' is
>> tested first, and it is correctly matched as (something/sub).
>>
>> Ciao,
>>               Daniel
>>
>>
>> --
>> Daniel Hahn
>> Software Architect
>> hahn@...
>>
>> Net7
>> Via Marche 8a - 56123 Pisa
>> http://www.netseven.it/
>>
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>>
>>  http://xircles.codehaus.org/manage_email
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>    http://xircles.codehaus.org/manage_email
>
>

--
Daniel Hahn
Software Architect
hahn@...

Net7
Via Marche 8a - 56123 Pisa
http://www.netseven.it/





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

    http://xircles.codehaus.org/manage_email


 « Return to Thread: Routing problem with JRuby/Rails