[#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:21406] Re: nested require files need path internally

From: Paul Brannan <pbrannan@...>
Date: 2001-09-19 19:09:01 UTC
List: ruby-talk #21406
On Wed, 19 Sep 2001, Yukihiro Matsumoto wrote:

> Your statement is understandable.  I think it's trade off between
> library search path complexity and saving few strokes of grep and
> edit.  I prefer behavior simplicity this case.
>
> 							matz.

I definitely prefer simplicity.

However, this is a case, I think, where we have a tradeoff between
simplicity in the Ruby library and simplicity in the code that Ruby
developers write.  Remember that following code (Matz, [ruby-talk:21366]):

  system "rm -rf $HOME"

is dangerous.  Now, consider the solutions that have been proposed to the
problem of loading files from the same directory as the file that was
written.  I intend to show you that there is a real problem here that
needs to be addressed:

David Alan Black [ruby-talk:21298]:

  $:.unshift $:.pop
-or-
  require "./date"

The first of these depends on it only being done ONCE, and both have the
problem of possibly loading the wrong file, depending on what directory
the script was started from.

Michael Neumann [ruby-talk:20201]:

  $LOAD_PATH.unshift "."
  require "file"

A bit better than the last solution.  It has '.' in $LOAD_PATH twice, so a
little slower for trying to require files that don't exist, but that's
probably a non-issue.  However, this still does not address the security
issue.

Dave Thomas (Rubicon) [ruby-talk:20200], [ruby-talk:21337]:

  $: << File.dirname($0) << File.join(File.dirname($0), "..")

Now Dave doesn't have the current directory in the $LOAD_PATH, but he does
have the directory that the main script is located in.  This still allows
the wrong file to be loaded in the following cases:
  a) the script is required from a program that embeds Ruby but does not
     set $0 properly.
  b) a file in Rubicon requires another file that also modifies $:
  c) A rogue script is placed in the parent directory of where the script
     is run from (this can be solved by taking the latter
     File.join(...) out of $:).

I've proposed yet another solution [ruby-talk:20198]:

  def requirelocal(file, *args)
    caller_file, *foo = caller[0].split(':')
    caller_dir = File.dirname(caller_file)
    require File.join(caller_dir, file)
  end

This, IMHO, is the best solution out of the ones here, but it's still got
issues, since it depends on the formatting of caller() (though RCR#15
would help here).  It does help with the security issue, and it solves the
problem of requiring the same file twice, since the filename is
"normalized"  before it is required.

So we have five solutions from four people who write a LOT of Ruby code,
and none of the solutions are perfect.  This is a case where we have a
nontrivial problem to solve, and having each person solve the problem
independently:
  1) is buggy
  2) has security holes, and
  3) does not promote code re-use.

As Lars Christensen pointed out in [ruby-talk:21306]:

  C/C++                   Ruby
  #include <file.h>       require "file.rb"
  #include "file.rb"      ?

C/C++ has a way of requiring system headers and non-system (local)
headers, but Ruby only has a way to include system scripts.

Ruby has a hole here, and it needs to be filled.

Paul

In This Thread