[#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:21779] Re: Transparent Proxies

From: Paul Brannan <pbrannan@...>
Date: 2001-09-27 16:28:32 UTC
List: ruby-talk #21779
On Thu, 27 Sep 2001, Jason Voegele wrote:

> Hello all,
>
> I'm trying to implement a persistent object store similar to an Object
> Oriented Database.  One feature of this object store is on-demand
> loading of objects, such that an object is only loaded from the
> database when it is needed.

Sounds interesting.

> I've been thinking about the various ways to implement this but have
> not come up with a satisfactory solution.  There was some time back a
> discussion about the possibility of adding a "become" feature (ala
> Smalltalk) to Ruby that would provide exactly what I need, but it
> appears that there were many problems with "become" that prevent it
> from being added to the language.  I know also that there is a
> standard "delegate" package for Ruby, but there are other problems
> with this, such as "delegate.class" won't return the right thing, and
> seemingly severe performance problems noted in this post:
>
> http://groups.google.com/groups?q=delegate&hl=en&group=comp.lang.ruby&rnum=4&selm=fWQS6.109749%24I5.25755148%40news1.rdc1.tn.home.com

Interesting that the post you mentioned never made it to ruby-talk.  I
think that was from when the link between the list and the newsgroup was
temporarily broken.

Part of my problem in that post was that I was not correctly using
delegate.  What I did was this:

  class B < SimpleDelegator
    def initialize
      @a = A.new
      super(@a)
    end
  end

but I now know that what I should have done was this:

  class B < DelegateClass(A)
    def initialize
      @a = A.new
      super(@a)
    end
  end

Additionally, an alternative implememtation for class C would have been:

  class C
    def initialize
      @a = A.new
    end

    def method_missing(*message)
      @a.__send__(*message)
    end
  end

using this approach, DelegateClass(Foo) and the "method_missing hack"
produce very close timing results.

The reason SimpleDelegate is so slow is that it must create new delegate
methods every time a new object is created; DelegateClass(Foo) does this
only once, when the class itself is created.  However, if Foo changes
(i.e. if methods are added or removed) then DelegateClass(Foo) will not
not get the new methods, and it will still try to delegate the removed
methods.

> What I'm looking for is a means of implementing a transparent proxy,
> such that things like "proxy.class" work as expected and allows the
> proxy to be replaced with the actual object when it becomes necessary,
> and all of this without being "too" slow.  Any ideas?

One thing I considered doing in ROMP (which is a proxy over a network) was
to override type() and class() in the proxy object to return the class of
the object on the other side.  I decided against doing this, though,
because it might be useful to know whether I am talking to a proxy object
or whether I am talking to a real object (of course, singe methods can be
added/removed from an object at run-time, knowing the "type" of an object
isn't exceptionally useful information anyway; responds_to? is a much
better option in many cases).

> C++ tends to do this by allowing pointers to "fault" and catching the
> exception.  I don't think I can do this in Ruby, and I'm not sure that
> I'd want to anyway.

I'm not sure what you mean here.  Can you provide an example?

Paul


In This Thread