[#32695] md5.so (LoadError) — FUKUI Osamu <o-fukui@...>
はじめまして 福井と申します。
In message "[ruby-list:32695] md5.so (LoadError)"
福井です。
In message "[ruby-list:32698] Re: md5.so (LoadError)"
[#32721] コマンドラインオプション -K と -e — "Tatsuaki Nagai" <Tatsuaki_Nagai@...>
永井@KCです。
[#32727] require "./xxx" の「カレントディレクトリ」の意味 — Take_tk <ggb03124@...>
あるディレクトリαにあるスクリプトAに「require "./xxx"」と書いてあると、
まつもと ゆきひろです
たけ(tk)です。
In article <1007384829.854960.10474.nullmailer@ev.netlab.jp>,
たけ(tk)です。
まつもと ゆきひろです
[#32772] newdate — tadf@...
ふなばです。
In article <20011204234521G.tadf@kt.rim.or.jp>,
ふなばです。
まつもと ゆきひろです
ふなばです。
In article <20011210180612F.tadf@funaba.org>,
ふなばです。
なひです。
ふなばです。
なひです。
ふなばです。
まつもと ゆきひろです
ふなばです。
In article <20011210162702A.tadf@funaba.org>,
ふなばです。
In article <20011212093832C.tadf@funaba.org>,
ふなばです。
In article <20011212135605G.tadf@funaba.org>,
まつもと ゆきひろです
すいません。件名が変だったので、再送します。コメントをくださる方は、
須賀です。昨日の議論を反映して、仕様案(*)を改版しました。
[#32797] dir_config (mkmf.rb) のオプション指定の優先順位 — tamra@...
なかだです。
In <200112060205.fB625u928906@sharui.nakada.kanuma.tochigi.jp>
なかだです。
In <200112060838.fB68bx924929@sharui.nakada.kanuma.tochigi.jp>
なかだです。
[#32807] irb 0.8 release — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
From: keiju@rational.com (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
From: keiju@rational.com (石塚圭樹)
けいじゅ@日本ラショナルソフトウェアです.
From: keiju@rational.com (石塚圭樹)
From: rubikitch <rubikitch@ruby-lang.org>
けいじゅ@日本ラショナルソフトウェアです.
From: keiju@rational.com (石塚圭樹)
[#32814] 添削お願い — Take_tk <ggb03124@...>
見てのとおり、ユーザが指定した拡張子のリストの文字列を正規表現の配列に変
[#32836] configure.in for netbsd — hiramatu@...
平松と申します。
[#32858] [ANN] html-template 0.15 — IKEBE Tomohiro <ikebe@...>
[#32869] RAA update — rubikitch <rubikitch@...>
るびきちです。
[#32904] Segmentation fault — em6t-kbt@...
久保田です。
[#32923] Ruby/GSL — yoshiki@...
常定と申します。
[#32930] irbsh の rehash が遅い — rubikitch <rubikitch@...>
るびきちです。
新井です。
[#32935] Ruby256 倍本 " 界道編 " — shukaku@...
原です。
新井です。
なかだです。
[#32945] class-in-state — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#32948] [uri.rb] strip or not — rubikitch <rubikitch@...>
るびきちです。
[#32974] ruby で組んだ CGI の挙動がおかしい — Toru MITANI <toru_m@...2.dion.ne.jp>
[#32987] [Media Watch] 「横着プログラミング」 — Shin-ichiro HARA <sinara@...>
原です。
[#32989] write to $> causes error on mswin32/mingw32 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
あおきです。
こんにちは、なかむら(う)です。
[#33014] "Walrus" on LinuxJapan — Taku Nakajima <tnakajima@...>
中島@ブレーンです。
[#33026] Ruby 1.6.6 リファレンスマニュアル日本語版 (RD) — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#33047] regex bug? — Yamamoto Atsushi <yamamoto@...>
山本@東大駒場です.
[#33050] cgi.rb で cookie の encoding について — Beyond <beyond@...>
こんにちは、なかむら(う)です。
なかだです。
なかだです。
On Fri, 28 Dec 2001 15:46:50 +0900
青山です。
In message <20011228054515.726.qmail@localhost>
青山です。
青山です。
In article <20011229013722.1869.qmail@localhost>,
青山です。
青山です。
(根深いところでこじれているようですが…そこはひとまずおいといて、)
[#33114] 新年会 — "Shin'ya Adzumi" <adzumi@...>
あづみです。
[ruby-list:32914] rb_define_module を一回だけ呼びたい
堀之内と申します。
拡張ライブラリーでモジュールを定義するのに使う rb_define_module
に関する質問です。Ruby では、
module NumRu
class Hoge
end
end
module NumRu
module Uge
end
end
のようにすると、NumRu::Hoge はそのままに、NumRu::Uge を追加でき
るのですが、拡張ライブラリーで rb_define_module を繰り返すと、前
の定義を上書きしてしまいます。そこをなんとか追加したいというのが
悩みでした。結局その方法は見つかったのですが、Ruby本体の eval.c
から何行もコピーすることになり、「これはむしろ rb_define_module
の中で対応すべきことなんじゃないか」と思いましたので、是非を伺お
うという次第です。
まず、「そもそもなんでそんなことをしたいのか」と思われるかもしれ
ませんので、背景を説明します。現在、互いに(それなりに)独立しつ
つ、ある程度まとまった目的で使うための、複数のクラス/モジュール
群を開発してます。それらををまとめるため、共通のモジュールの傘に
くるもうとしています。具体的には、多次元配列を用いた統計計算や描
画等々なのですが、クラスやモジュールの数が多くなるので、ユーザー
が併用するかもしれない他のライブラリーとの名前の競合を避けるよう、
全体を一つのモジュールの傘(上の例では NumRu)にくるみたいと考え
てのことです。インストール先も傘に対応したディレクトリーを掘って、
require 'numru/toukei'
require 'numru/byouga'
これを include するなら、
include NumRu または include NumRu::Byouga
などとする、というわけです。このため、拡張ライブラリー内では、そ
れぞれ、
mNumRu = rb_define_module("NumRu");
を呼びたい、しかし、単純にやると上書きになってしまう、というのが
悩みでした。
結局それは、eval.c を参考に以下のようにすることで、対応出来まし
た。
ID id;
id = rb_intern("NumRu");
if (rb_const_defined_at(ruby_class, id)) {
mNumRu = rb_const_get(ruby_class, id);
}
if (mNumRu) {
if (TYPE(mNumRu) != T_MODULE) {
rb_raise(rb_eTypeError, "%s is not a module",
rb_id2name(id));
}
if (rb_safe_level() >= 4) {
rb_raise(rb_eSecurityError, "extending module prohibited");
}
}
else {
mNumRu = rb_define_module("NumRu");
}
ここで ruby_class はグローバルな変数ですので、上の方で
extern VALUE ruby_class; と宣言してます。
しかし、もしも rb_define_module が、Ruby におけるモジュール定義
と同じ振る舞いをすべきなら、このようなプログラミングを必要としな
いよう、rb_define_module で解決すべきと思います。この「もしも」
が成り立つかどうかがポイントですが、如何でしょうか。なお、モジュー
ルでなくクラスを定義する場合に関しては調べてませんが、恐らく同じ
ような状況になっていることと思います。
よろしくお願いします。