[#21482] begin/rescue/else syntax is broken — akira yamada <akira@...>
[#21498] test/ChangeLog ? lib/ChangeLog — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
[#21499] File#path on closed file. — Tanaka Akira <akr@...17n.org>
ふと、
そういえば、
まつもと ゆきひろです
[#21508] eval BEGIN/END at runtime — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
なひです。
新井です。
[#21511] return value of freeze — Tanaka Akira <akr@...17n.org>
ふと、freeze を使って思ったのですが、これの返値は何なんでしょうか?
[#21531] O_ACCMODE — Tanaka Akira <akr@...17n.org>
POSIX において fcntl.h に定義されている、O_ACCMODE が欲しくなったので
西山和広です。
In article <20031007220838.CC51.ZN@mbf.nifty.com>,
[#21543] Enumerator — "Akinori MUSHA" <knu@...>
1.8.0 のtきは標準ライブラリ入りについて異論はなかったものの
新井です。
[#21556] rewinding for Thread — nobu.nakada@...
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#21557] at_exist and safe level — Tanaka Akira <akr@...17n.org>
% ruby -ve '$SAFE = x = 1; at_exit { p $SAFE; p x }'
[#21572] core dump in rb_thread_schedule — Tanaka Akira <akr@...17n.org>
今日、cvs update したら、rb_thread_schedule で core を吐くようになったのですが、
まつもと ゆきひろです
なかだです。
In article <200310090901.h9991gfA004660@sharui.nakada.kanuma.tochigi.jp>,
In article <87ekxmojwc.fsf@serein.a02.aist.go.jp>,
[#21590] extend with marshal_dump/marshal_load — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
[#21607] autoload の patch は取り込まれないんでしょうか? — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
[#21616] access ENV on $SAFE==4 — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
まつもと ゆきひろです
ただただしです。
永井@知能.九工大です.
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
永井@知能.九工大です.
まつもと ゆきひろです
ただただしです。
まつもと ゆきひろです
[#21632] SEGV (test_drb.rb) — Masatoshi Seki <m_seki@...>
咳といいます。
[#21639] load() blocks thread scheduling — Tietew <tietew-ml-ruby-dev@...>
Tietew です。
まつもと ゆきひろです
[#21641] SOAP::StreamError: Illegal media type. — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです。
[#21679] Proposal: string literal concatenation — mput <root@...>
mput です。
[#21682] ruby-tk hangs when exception is raised — akira yamada <akira@...>
なかだです。
永井@知能.九工大です.
永井@知能.九工大です.
永井@知能.九工大です.
永井@知能.九工大です.
永井@知能.九工大です.
永井@知能.九工大です.
永井@知能.九工大です.
永井@知能.九工大です.
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
永井@知能.九工大です.
永井@知能.九工大です.
永井@知能.九工大です.
[#21707] drb Hash#each — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
咳といいます。
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
[#21730] exit in $SAFE = 4 with -d — Tanaka Akira <akr@...17n.org>
% ruby -de 'lambda { $SAFE = 4; exit }.call; p 1'
[#21747] ruby 1.8.1 preview1 schedule — matz@... (Yukihiro Matsumoto)
関係者各位、
Siena. です。
なかだです。
Siena. です。
なかだです。
[#21778] IOError while building on Solaris with Sun cc — 桑村慎哉 <kuwa@...>
桑村です。
まつもと ゆきひろです
[#21790] ruby 1.8.1 preview1 — matz@... (Yukihiro Matsumoto)
It's out.
取り敢えず、NetBSD currentでの状況です。pkgsrc的なことは特にせず、ある
[#21794] ruby-1.8.1-preview2 での rb_iter_break — Kenta MURATA <muraken2@...>
むらけんです.
[ruby-dev:21595] Re: extend with marshal_dump/marshal_load
なひです。
> From: "Yukihiro Matsumoto" <matz@ruby-lang.org>
> Sent: Friday, October 10, 2003 2:26 PM
> extend対象のクラス(サンプルではQuux)を作らなくちゃいけないん
> ですが、以下のようなテクニックが使えます。FooやBarではextend
> についてなにも考える必要が無いのがポイントです。
確かにこれはポイントとして重視すべきですね。
「marshal_dumpペアを持つオブジェクトにextendする場合、
気をつけないと元に戻らない
(Marshalを通るとおかしなオブジェクトになる)」
わけですから、債務はそのオブジェクトを作ったヤツにあり、
FooやBarではない、と。
local(private) instance variableについては、リフレクションにより
外からさわれるようにして、それを書き出すようにしたほうが楽なのかな。
ちなみに、親クラスでmarshal_dumpがあるのに、サブクラスで
marshal_dumpを定義せず、サブクラスで導入したインスタンス変数が
書き出されなくても、それはサブクラスの債務違反ということで、
ほっといていいと思います。実は_dumpも気にしなくていいんじゃないかと。。
ただ、Timeが困るんですが。
以下、ほとんど全文引用ですいません。若干の突っ込み。
> class Foo
> def initialize
> @data_a = 1
> @r, @w = IO.pipe
> end
>
> def marshal_dump
> @data_a
> end
>
> def marshal_load(obj)
> @data_a = obj
> @r, @w = IO.pipe
> end
> end
>
> class Bar < Foo
> def initialize
> super
> @data_b = 2
> end
>
> def marshal_dump
> [super, @data_b]
> end
>
> def marshal_load(data)
> super(data[0])
> @data_b = data[1]
> end
> end
>
> module ExtendMarshal
> def marshal_dump
> base_data = super
> extends = (class << self; self; end).ancestors - self.class.ancestors - [ModuleMarshal]
ModuleMarshal -> ExtendMarshalかな。しかしこのパターン
(Quuxを使うパターン)だとこの引き算は要らなそうですね。
o1にExtendMarshalをextendするパターンでいけるとかっこいいんだ
けど、「marshal_dumpがあるとextendは保存されない」により
絶対にうまくいかない。。。
> data = {:modules => extends, :base => base_data}
> extends.each do |m|
> m.instance_method(:marshal_dump_extend).bind(self).call(data)
> end
> data
> end
>
> def marshal_load(data)
> extends = data[:modules]
> extends.each do |m|
each -> reverse_eachにすると、extend順も戻ると思います。
> self.extend(m)
> m.instance_method(:marshal_load_extend).bind(self).call(data)
> end
> super(data[:base])
> end
> end
>
> module Baz
> include ExtendMarshal
> def marshal_dump_extend(data)
> data[:Baz] = 42
> end
>
> def marshal_load_extend(data)
> @baz_data = data[:Baz]
> end
> end
>
> class Quux<Bar
> include ExtendMarshal
> end
>
> o1 = Quux.new
> o1.extend(Baz)
> o2 = Marshal.load(Marshal.dump(o1))
> p o1
> p o2