[#42851] Object#define_singleton_method がない?? — take_tk <ggb03124@...>

たけ(tk)です

14 messages 2006/10/06
[#42852] Re: Object#define_singleton_method がない?? — Yukihiro Matsumoto <matz@...> 2006/10/06

まつもと ゆきひろです

[#42853] Re: Object#define_singleton_method がない?? — take_tk <ggb03124@...> 2006/10/06

たけ(tk)です。

[#42870] system の実行タイミングのトラブル — "Hideo Konami" <konami@...>

小波です。

18 messages 2006/10/14
[#42874] Re: system の実行タイミングのトラブル — "Hideo Konami" <konami@...> 2006/10/14

小波です。

[#42876] Re: system の実行タイミングのトラブル — cuzic <cuzic@...> 2006/10/14

cuzic です。

[#42885] apt-listbugs: soap4r での悩み — Junichi Uekawa <dancer@...>

ruby-list のみなさま、

21 messages 2006/10/16
[#42891] Re: apt-listbugs: soap4r での悩み — "NAKAMURA, Hiroshi" <nakahiro@...> 2006/10/17

-----BEGIN PGP SIGNED MESSAGE-----

[#42892] Re: apt-listbugs: soap4r での悩み — Junichi Uekawa <dancer@...> 2006/10/17

こんにちは、

[#42896] Re: apt-listbugs: soap4r での悩み — "NAKAMURA, Hiroshi" <nakahiro@...> 2006/10/17

-----BEGIN PGP SIGNED MESSAGE-----

[#42929] Re: 括弧なしsuperで引数が引き継がれない — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

17 messages 2006/10/31
[#42930] Re: 括弧なしsuperで引数が引き継がれない — "U.Nakamura" <usa@...> 2006/10/31

こんにちは、なかむら(う)です。

[#42931] instant rails インストール! irbを起動するには? — "Uema Tsuyoshi" <mugenkai15@...> 2006/10/31

上間といいます。

[#42933] Re: instant rails インストール! irbを起動するには? — "きむらこういち" <hogemuta@...> 2006/10/31

木村です。

[#42937] Re: instant rails インストール! irbを起動するには? — "Uema Tsuyoshi" <mugenkai15@...> 2006/10/31

上間です。

[ruby-list:42877] Re: system の実行タイミングのトラブル

From: rubikitch <rubikitch@...>
Date: 2006-10-15 11:06:22 UTC
List: ruby-list #42877
From: cuzic <cuzic@cuzic.com>
Subject: [ruby-list:42876] Re: system の実行タイミングのトラブル
Date: Sun, 15 Oct 2006 07:34:20 +0900

るびきちです。

> 簡単な方法として at_exit を使って、プログラム終了時に後処理を行うというテクニックがあります。
> ただ、途中でGCされたときとかに面倒になりそうなので
> 意味なくグローバル変数に登録してみたりとかしています。
> 本当にグローバル変数的に使いたいときはこの方法はオススメですね。

やっぱりグローバル変数は気持ち悪いので僕ならこうします。

class Object
  GC_PROTECTED_OBJECTS = []
  def protect_from_gc
    GC_PROTECTED_OBJECTS << self
    self
  end
end

class S < Struct.new :a
  def at_end
    "cleanuped!"
  end
end

sa = S.new(10).protect_from_gc  # => #<struct S a=10>
at_exit{
  sa.at_end                     # => "cleanuped!"
}
S.new(20).protect_from_gc           # => #<struct S a=20>
Object::GC_PROTECTED_OBJECTS        # => [#<struct S a=10>, #<struct S a=20>]


> 状況によっては、Net::HTTP.start のように、クラスメソッドとして
> ブロックを引数にとるメソッドを容易する方法を用います。
> この方法は rubikitch さんが紹介した方法かな。
> 使える場合も多いのですが、singleton なクラスの場合
> とかでグローバル変数的に使いたい場合には向きません。

ASingletonClass.start do |singleton|
  main(singleton)
end

ではまずいでしょうか?

> 最後に ObjectSpace.define_finalizer を用いる方法があります。
> これはドキュメントにも書かれていますが、使い方が難しい方法です。

濫用防止のためにこれは「わざと」使い方を難しくしてると聞いたことがあります。

--
rubikitch
http://www.rubyist.net/~rubikitch/

In This Thread