From: Stefano Crocco Date: 2007-02-06T08:51:53+09:00 Subject: Re: require statement clarification Alle marted狸 6 febbraio 2007, Neville Franks ha scritto: > 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 Franks, 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