[#30426] CGI でグラフを描くときにお勧めのライブラリは? — 堀川 久 <vzw00011@...>

こんにちは。

12 messages 2001/07/01

[#30453] syntax check without execution? — Tanaka Akira <akr@...17n.org>

最近、eRuby のまねごとをしていて、そのなかで Ruby のコードを生成してい

16 messages 2001/07/04
[#30455] Re: syntax check without execution? — matz@... (Yukihiro Matsumoto) 2001/07/04

まつもと ゆきひろです

[#30479] Object#dup — "Shin'ya Adzumi" <adzumi@...>

あづみです。

20 messages 2001/07/05

[#30512] open errno EALREADY triggerd — "Inoue" <inoue@...>

井上です。

16 messages 2001/07/08

[#30514] Ruby module frame work? — Takahiro Kambe <taca@...>

こんにちは。

16 messages 2001/07/09
[#30515] Re: Ruby module frame work? — matz@... (Yukihiro Matsumoto) 2001/07/09

まつもと ゆきひろです

[#30529] InterBase を使用したい — "YOUJI KUROKAWA" <CQE10242@...>

環境

22 messages 2001/07/09

[#30530] Question about script on the book "Ruby nyuumon" — NAWATE Masahiko <agul@...>

縄手@松江と言います。

17 messages 2001/07/09
[#30531] Re: Question about script on the book "Ruby nyuumon" — rubikitch <rubikitch@...> 2001/07/09

From: NAWATE Masahiko <agul@mag.shimane-u.ac.jp>

[#30533] Re: Question about script on the book "Ruby nyuumon" — NAWATE Masahiko <agul@...> 2001/07/09

縄手@松江です。

[#30734] UML クラス図と Ruby の記述についての対応 — Ken-ichi HASHIMOTO <ken@...>

橋本@福井県在住です。

13 messages 2001/07/28

[#30764] int/int => float? — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

50 messages 2001/07/31
[#30785] Re: int/int => float? — Konishi@... (Hiromasa KONISHI) 2001/07/31

 KONISHI Hiromasaです。

[#30767] Re: int/int => float? — keiju@... (石塚圭樹) 2001/07/31

けいじゅ@日本ラショナルソフトウェアです.

[#30768] Re: int/int => float? — matz@... (Yukihiro Matsumoto) 2001/07/31

まつもと ゆきひろです

[#30770] Re: int/int => float? — Take_tk <ggb03124@...> 2001/07/31

たけ(tk)です。

[#30771] Re: int/int => float? — matz@... (Yukihiro Matsumoto) 2001/07/31

まつもと ゆきひろです

[ruby-list:30713] Re: Rouge and readline and 'pure Ruby library/ext library'

From: Minero Aoki <aamine@...>
Date: 2001-07-23 18:19:02 UTC
List: ruby-list #30713
あおきです。

  In mail "[ruby-list:30712] Rouge and readline and 'pure Ruby library/ext library'"
    TAKAHASHI Masayoshi <maki@open-news.com> wrote:

> 高橋征義です。

> さてここからが本題なのですが、FastCGI/FCGIの例もある通り、
> こういう「pure Rubyなライブラリと拡張ライブラリとで同じ機能
> を提供するものが両方ある」っていう状態がだんだん増えてきて
> いる・これから増えていくような気がします。あるいは同じ
> (Cとかの)ライブラリを使っていても、片や拡張ライブラリ、
> 片やRuby/DL版とか。
> このような場合、それぞれのライブラリの作り方・使い方は、
> どのようにするのが望ましいでしょうか。

>  ・ライブラリを使う側としては、例えばFooとRFooがあった時、

ちょっと状況は違いますが、tmail や strscan では pure Ruby 版と
拡張モジュール版を二重化 (両方で同じ動作のメソッドを提供) して
います。そこでは以下のようなコードを使ってます。

    require 'rmails.rb'
    begin
      require 'cmails.so'   # class MailScanner_C を定義
      MailScanner = MailScanner_C
    rescue LoadError
      MailScanner = MailScanner_R
    end

このようにしておくと常に両方にアクセス可能になるので、バージョンの
違いを検出したりテストするのが楽になります。ただしこれは一人が両方を
メンテしていないとできないので、より一般的には

    class Foo_uniq
      ....
    end
    unless defined? Foo then
      Foo = Foo_uniq
    end

であるとか

    (some.rb)       ライブラリ作者 A
    class Foo
    end

    (any.rb)        ライブラリ作者 B
    class RFoo
    end

    (main.rb)       使う側
    require 'some'
    require 'any'
    module Bar
      Foo_some = ::Foo
      Foo_any = RFoo
      Foo = Foo_any    # デフォルトの候補を選択
    end

とするのがよいのではないでしょうか。重点は以下の二点です。

    1. いざというときに選択肢各個に明示的に
       アクセスできるほうがなにかと便利
    2. まず明確に区別し、そのうえで自分が使いやすい
       ほうをデフォルトとして選択する


作りかたのほうは、基本的にそれぞれの作者が

  * 似た名前なら似た動作

を目指すしかないと思います。無作為の名前衝突を避けるためには、
つい数日前のごとけんさんのメールにもあったように、RAA を名前空間と
して利用するなどの方法をとれば少しは安心感が得られるでしょう。
RAA の登録の主キーを「名前」じゃなくて「require 名」にするだけ
でも状況はよくなると思います。
-------------------------------------------------------------------
青木峰郎

In This Thread