Require statement clarification


#1

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


#2

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


#3

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.


#4

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


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