[#20675] RCR: non-bang equivalent to []= — Tobias Reif <tobiasreif@...>

Hi,

49 messages 2001/09/01
[#20774] Re: RCR: non-bang equivalent to []= — Tobias Reif <tobiasreif@...> 2001/09/03

I wrote:

[#20778] Re: RCR: non-bang equivalent to []= — Kevin Smith <kevinbsmith@...> 2001/09/03

--- Tobias Reif <tobiasreif@pinkjuice.com> wrote:

[#20715] oreilly buch von matz - website online — markus jais <info@...>

hi

43 messages 2001/09/02
[#20717] Re: OReilly Ruby book has snail on cover — ptkwt@...1.aracnet.com (Phil Tomson) 2001/09/02

Actually, thanks for posting it here. I was trying to search OReilly's

[#20922] Re: OReilly Ruby book has snail on cover — Paul Brannan <pbrannan@...> 2001/09/05

On Mon, 3 Sep 2001, Phil Tomson wrote:

[#20768] Minor cgi.rb question — "Hal E. Fulton" <hal9000@...>

I don't have much experience with

25 messages 2001/09/03

[#20770] Calling member methods from C++ — jglueck@... (Bernhard Glk)

Some quetsions have been solved for me, but my message system does not

12 messages 2001/09/03

[#20976] destructor — Frank Sonnemans <ruby@...>

Does Ruby have a destructor as in C++?

25 messages 2001/09/07

[#21218] Ruby objects <-> XML: anyone working on this? — senderista@... (Tobin Baker)

Are there any Ruby analogs of these two Python modules (xml_pickle,

13 messages 2001/09/15

[#21296] nested require files need path internally — Bob Gustafson <bobgus@...>

Version: 1.64

29 messages 2001/09/18
[#21298] Re: nested require files need path internally — David Alan Black <dblack@...> 2001/09/18

Hello --

[#21302] Re: nested require files need path internally — Bob Gustafson <bobgus@...> 2001/09/18

On Tue, 18 Sep 2001, David Alan Black wrote:

[#21303] Re: nested require files need path internally — matz@... (Yukihiro Matsumoto) 2001/09/18

Hi,

[#21306] Re: nested require files need path internally — Lars Christensen <larsch@...> 2001/09/18

On Tue, 18 Sep 2001, Yukihiro Matsumoto wrote:

[#21307] Re: nested require files need path internally — matz@... (Yukihiro Matsumoto) 2001/09/18

Hi,

[#21331] Re: nested require files need path internally — Paul Brannan <pbrannan@...> 2001/09/18

> The big difference is C++ search done in compile time, Ruby search

[#21340] Re: nested require files need path internally — matz@... (Yukihiro Matsumoto) 2001/09/18

Hi,

[#21353] Re: nested require files need path internally — Paul Brannan <pbrannan@...> 2001/09/18

On Wed, 19 Sep 2001, Yukihiro Matsumoto wrote:

[#21366] Re: nested require files need path internally — matz@... (Yukihiro Matsumoto) 2001/09/19

Hi,

[#21368] Re: nested require files need path internally — "Julian Fitzell" <julian-ml@...4.com> 2001/09/19

On 19/09/2001 at 10:12 AM matz@ruby-lang.org wrote:

[#21376] Re: nested require files need path internally — matz@... (Yukihiro Matsumoto) 2001/09/19

Hi,

[#21406] Re: nested require files need path internally — Paul Brannan <pbrannan@...> 2001/09/19

On Wed, 19 Sep 2001, Yukihiro Matsumoto wrote:

[#21315] Suggestions for new CGI lib — anders@... (Anders Johannsen)

From the comp.lang.ruby thread "Minor cgi.rb question" (2001-09-03), I

21 messages 2001/09/18

[#21413] Ruby/objects book in style of The Little Lisper — Brian Marick <marick@...>

I fell in love with Lisp in the early 80's. Back then, I read a book called

36 messages 2001/09/19
[#21420] Re: Ruby/objects book in style of The Little Lisper — Christopher Sawtell <csawtell@...> 2001/09/20

On 20 Sep 2001 06:19:44 +0900, Brian Marick wrote:

[#21479] Re: Ruby/objects book in style of The Little Lisper — Kevin Smith <kevinbsmith@...> 2001/09/21

--- Christopher Sawtell <csawtell@paradise.net.nz> wrote:

[#21491] SV: Re: Ruby/objects book in style of The Little Lisper — "Mikkel Damsgaard" <mikkel_damsgaard@...> 2001/09/21

[#21494] Re: SV: Re: Ruby/objects book in style of The Little Lisper — Kevin Smith <kevinbsmith@...> 2001/09/21

--- Mikkel Damsgaard <mikkel_damsgaard@mailme.dk> wrote:

[#21510] Re: SV: Re: Ruby/objects book in style of The Little Lisper — Todd Gillespie <toddg@...> 2001/09/22

On Sat, 22 Sep 2001, Kevin Smith wrote:

[#21514] Re: SV: Re: Ruby/objects book in style of The Little Lisper — Kevin Smith <kevinbsmith@...> 2001/09/22

--- Todd Gillespie <toddg@mail.ma.utexas.edu> wrote:

[#21535] irb — Fabio <fabio.spelta@...>

Hello. :) I'm new here, and I have not found an archive of the previous

15 messages 2001/09/22

[#21616] opening a named pipe? — "Avdi B. Grimm" <avdi@...>

I'm having trouble reading from a named pipe in linux. basicly, I'm

12 messages 2001/09/24

[#21685] manipulating "immutable" objects such as Fixnum from within callbacks & al... — Guillaume Cottenceau <gc@...>

Hello,

15 messages 2001/09/25

[#21798] Ruby internal (guide to the source) — "Benoit Cerrina" <benoit.cerrina@...>

Hi,

22 messages 2001/09/28

[ruby-talk:21353] Re: nested require files need path internally

From: Paul Brannan <pbrannan@...>
Date: 2001-09-18 20:08:11 UTC
List: ruby-talk #21353
On Wed, 19 Sep 2001, Yukihiro Matsumoto wrote:

> I'm not sure what is your point.  If you really want to read from the
> current directory hierarchy (which is pretty unreliable), you can
> prepend "." to $LOAD_PATH variable.

The idea is that I want to split a project between multiple files.
Generally speaking, it's convenient to have exactly one class per file and
each class implemented in only one file.  In other words, if I have a
class Foo and a class Bar, then class Foo gets put in Foo.rb and class Bar
gets put in Bar.rb.

Now consider that Foo inherits from or otherwise depends on Bar.  Then in
Foo.rb, I'm likely to put:

  require 'Bar.rb'

Now consider that Foo.rb does a little bit more than just define a class
Foo; in fact I would like to do this:

  [paul@zaphod ~/foo] ruby Foo.rb

This should work just fine, provided that both Foo.rb and Bar.rb are in
the ~/foo directory.  If however, I want to do this:

  [paul@zaphod ~/] ruby foo/Foo.rb

Then this will not work, because the interpreter cannot find Bar.rb.  Thus
I have to use a hack of finding the directory name of __FILE__ to get Ruby
to find the file.  This is not at all convenient.

> Wait a second.
>
> |  require 'foo.rb'
> |  require 'foo'
>
> does not load twice.  In your example, you loaded a file using
> different path.  Normalizing loaded path is a good thing to see, but I
> don't think it's mandatory.

You are right.  I was confusing this with:

  require 'foo.rb'
  require './foo'

which I have mistakenly done in the past.

> |Ideally, require would do the following:
> |
> |  1) Check for the ./ prefix; if it is there, look in the same directory
> |     as __FILE__.
>
> I don't agree with this.  This changes "." semantics.

This is true.  As an alternative, all of my programs use a function called
"requirelocal" to require a file out of the same directory as the file
being executed.  There's also an equivalent "loadlocal" that is used less
often.

> |  2) Check to see if the file is a symlink; if it is, get the name of the
> |     real file being required.  Repeat as necessary.
> |  3) Find the full pathname of the file being required before marking the
> |     file as already having been required.
>
> I'm not sure above 2) and 3) are worthy enough, considering loading
> from current working direcotry is not recommended.
>
> 							matz.

It's not just about loading from the CWD.  On my machine,
/usr/local/lib/ruby/1.6 is already cluttered with a number of files.  I
can easily add new directories, which is fine (e.g. with 'net/ftp' et
al.), but what if a script in the 'net' directory wants to load another
script from the 'net' directory?  It doesn't really make sense for that
script to have to require 'net/foo', since that requires the script to
know where it is placed (or to deduce that information).

Since require is not an operation that is performed often, it makes sense
to me to make checks 2) and 3), since they are likely to make code more
robust.

Paul


In This Thread