[#35446] [Ruby 1.9 - Bug #4477][Open] Kernel:exec and backtick (`) don't work for certain system commands — Joachim Wuttke <j.wuttke@...>

10 messages 2011/03/07

[#35476] [Ruby 1.9 - Bug #4489][Open] [PATCH] Encodings with /-(unix|dos|mac)\Z/ — "James M. Lawrence" <quixoticsycophant@...>

20 messages 2011/03/10

[#35552] [Ruby 1.9 - Feature #4523][Open] Kernel#require to return the path of the loaded file — Alex Young <alex@...>

14 messages 2011/03/24

[#35565] [Ruby 1.9 - Feature #4531][Open] [PATCH 0/7] use poll() instead of select() in certain cases — Eric Wong <normalperson@...>

33 messages 2011/03/28

[#35566] [Ruby 1.9 - Feature #4532][Open] [PATCH] add IO#pread and IO#pwrite methods — Eric Wong <normalperson@...>

12 messages 2011/03/28

[#35586] [Ruby 1.9 - Feature #4538][Open] [PATCH (cleanup)] avoid unnecessary select() calls before doing I/O — Eric Wong <normalperson@...>

9 messages 2011/03/29

[ruby-core:35473] Re: MRI silently handles .so files as Ruby sources

From: Charles Oliver Nutter <headius@...>
Date: 2011-03-09 21:35:55 UTC
List: ruby-core #35473
On Wed, Mar 9, 2011 at 2:59 PM, Simone Carletti <weppos@weppos.net> wrote:
> Hello,
> today I noticed that if you have a file called filename.so.rb and you try to
> require it without specifying the extension, MRI silently understands that
> it isn't a .so file, will load the content and treat it as Ruby source.
>>
>> # filename.so.rb
>> puts __FILE__
>> # somefile.rb
>> require 'filename.so'
>> # => /../../filename.so.rb
>
> Other interpreters handle the case in a different way.
> For example, JRuby won't load the file because it looks for a Ruby extension
> in a file called filename.so.
> See http://jira.codehaus.org/browse/JRUBY-5569
> I had a small chat with Charles Oliver Nutter (you can read the comments in
> the JIRA ticket) and I'm curious to know if the way MRI works should be
> considered a bug, a coincidence or a feature.
> Thanks,

Just when I thought I knew all load-searching oddities :)

If you look at the JRuby bug you'll see that it's a very specific case
and I show several scenarios that either work or don't work...

* Only fails over for "extension" extensions like .so or
.bundle...does not fail over for things like foo.rb.rb or foo.rb.so
* Appears to do a search for both .rb and <extension extension> if the
original filename doesn't work
* Does not fail over to "extension" extensions that are not
appropriate for current platform, like .so.so on OS X

I think it's confusing and unpredictable and would just as soon have
the logic be "if it ends with an extension extension, only search
extension extensions."

- Charlie

In This Thread

Prev Next