Require statement clarification

For require “filename” if the filename doesn’t include an extension is
.rb assumed. I’ve been unable to find any documentation on this.

Also the Ruby distribution telnet.rb source file includes:
require “socket”

however I’m unable to find any socket.rb file anywhere, only a socket.c
So what does this file refer to?


Neville F., http://www.getsoft.com http://www.surfulater.com

Alle martedì 6 febbraio 2007, Neville F. ha scritto:

Neville F., http://www.getsoft.com http://www.surfulater.com
You can find the documentation you want with the command ‘ri require’.
At any
rate, here’s a summary: if the filename has a .rb extension, require
loads it
as a ruby source file. If it has the extension typical of libraries on
that
system (for example, .so on unix or .dll on windows), it loads it as a
ruby
extension. If the extension isn’t specified, it tries adding the
extensions
to the filename, until it finds an existing file.

Regarding socket, I have a socket.so file located
in /usr/lib/ruby/1.8/i686-linux (This is on gentoo linux. I think other
linux
distributions may have it on different paths. I don’t know about
windows).
This means that socket is a C extension. using require ‘socket’ will
load the
socket.so file.

I hope this helps

Stefano

Neville F. wrote:

Neville F., http://www.getsoft.com http://www.surfulater.com

If no extension is specified .rb is the default. If Ruby can’t find
filename.rb it will try to load filename.so. You can specify either .rb
or .so explicitly.

Thanks for that, especially the ‘ri require’ suggestion.


Neville F., http://www.getsoft.com http://www.surfulater.com