[#30408] Ruby 1.8.6 preview2 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 preview2 をリリースしました。

20 messages 2007/02/24
[#30414] fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Hidetoshi NAGAI <nagai@...> 2007/02/25

永井@知能.九工大です.

[#30418] Re: fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Nobuyoshi Nakada <nobu@...> 2007/02/25

なかだです。

[ruby-dev:30332] Re: exception on Singleton

From: SASADA Koichi <ko1@...>
Date: 2007-02-14 06:58:19 UTC
List: ruby-dev #30332
 ささだです。

 @_v をクラスローカルインスタンス変数にするという件を考えていたんです
が、ファイルローカルなものにするというのはだめかなぁ、と思うようになりま
した。つまり、現在の実装は suffix にクラス名を付ける(@_v -> @_v/C)よう
な感じですが、suffix にファイル名をつける(@_v/t.rb)ようなイメージで
す。ファイル名ではなく、ファイルコンパイル時に一意の値であれば問題ありま
せん。

 根拠は、まぁそのファイルを弄っている人は、どのクラスにどのインスタンス
変数が付いているかくらいは多分把握しているだろう(それに気づかずオーバー
ライドすることは無いんじゃないかなぁ)、という予測です。

 Singleton のような場合はこれで問題なくなり、また @__mutex__ のようなイ
ンスタンス変数はファイル外で定義したコードからはアクセスできなくなります。

 どうやっても他のファイルからはアクセス出来なくなるので、処理を挿入する
ということがやりづらくなり、まずい気もします。

 どうでしょうか。


SASADA Koichi wrote:
>  ささだです.
> 
> SASADA Koichi wrote:
>>  このようなプログラムが動かなくなっているようです。多分、ivar2 関係で、
>> Singleton で使う @__mutex__ という変数が nil になっているので、その辺に
>> 理由があるんじゃないかと思います。
> 
>  最初,この辺は ivar2 の実装がまずいのかな,と思ったんですが,ちょっと
> よくわかりませんでした.なんとなく,意図した挙動になっているような気もし
> ます.
> 
>  実装が正しいとして,対処としては,
> 
> 1. Singleton の実装を変える(@__mutex__ を @mutex__ にする,など)
> 2. @_v でクラスローカルインスタンス変数とするのをやめる
> 
> になるかと思います.どうしたもんでしょうか.1 の対処で動くことは確認しま
> した.
> 
>  個人的には,@_v のようなインスタンス変数は既に沢山あるので,@_v 以外の
> 選択肢を模索する(たとえば,@.v や @v!,@v@ とか)のもありなのではないか
> なと思うのですが,どうでしょうか.Matzにっきで散々繰り返された話題で,い
> まさら反対意見言うなよ,ということなのかもしれませんが.個人的には @.v
> がいいです.で,$.v がスレッドローカル変数.@v@と$v$の組もいいか.
> 


-- 
// SASADA Koichi at atdot dot net


In This Thread