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.,


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

Neville F.,
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
system (for example, .so on unix or .dll on windows), it loads it as a
extension. If the extension isn’t specified, it tries adding the
to the filename, until it finds an existing file.

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

I hope this helps



Neville F. wrote:

Neville F.,

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


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

Neville F.,