From: Pat Maddox Date: 2006-12-18T02:41:03+09:00 Subject: Re: require, load and include --- what's the difference? On 12/17/06, matt wrote: > Hello, > > I'm browsing through some code, trying to familiarize myself with the > language (I have a C++ background, with only a #include), and I realize > that there are 3 calls that I'm trying to wrap my head around. > > Here's my stab: > > Require -- seems to include another file to gain access to other > classes, modules, and global data. This seems to be equivalent to a C++ > include, with inclusion guards Right > Load -- seems to be the same as require, but will actually reload the > data every time it is called, where require will load once and cache the > file. This seems to be equivalent to C++ include, with out inclusion > guards. Right > Include -- seems to include a module name from a pre-determined path, > but not classes (unless encapsulated within a module). Would this be > similar to a C++ namespace being given the include directory at compile > time? include mixes in a module, so the methods defined on the module become instance methods on the class. module Foo def foo; "foo"; end end class Boring include Foo end Boring.new.foo => "foo" > So a couple of things here, are my understandings of the 3 methods > close, if not, could someone please expand on them. The other is what's > the advantage of include vs require? I mean, why would I include a > module, rather than require it's filename? load and require are for loading a file into your code. include is used to actually enhance an individual object (because a class itself is an object). Pat