[ruby-list:48683] klass と Marshal.load(Marshal.dump klass) が同じにならない

From: dezawa <dezawa@...>
Date: 2012-04-06 11:55:04 UTC
List: ruby-list #48683
出沢です

本題に入る前にメタな質問を。

実装レベルの仕様書を紙に出したい、できるだけメンテフリーにしたいと思って
いろいろ試しています。ご助言いただけるとうれしいです。

本題は二つあります。
rdoc でhtml化したオンラインのマニュアルも試みているのですが、これを
利用できないか、ということで、rdoc 3.9.4 をベースに
RDoc::Generator::Latex を試作しています。
一応 platexを通るようになって、リファクタ、使いやすくするためのoption作
り、LaTeXの表現の手直し、を始めた所ですが、

1: このgenerator をrdoc で使えるようにするにはどうしたら良いでしょう
  rdoc.rb 内でrequire すれば使えることは分かるのですが、
  それですと rdoc.rb を書き直すか cp して専用を作るかしないと。
  rdocやrdoc.rb自体に手を入れずに、例えば
       rdoc -r generator/latex
    のように行う方法はないでしょうか。

2: リファクタ中に思わぬトラブルがあって調べていて気がついたのですが
   klass と RDoc::RI::Store#save_class klass 内で作っている
     marshal = Marshal.dump klass
   を Marshal.load marshal したものと内容が変わります。
   klass == Marshal.load(Marshal.dump klass)
   これは trueなのですが、ppした中身がちがいます。

>>>>>
  klass を pp するとこのようになり

[class UbePlan < ActiveRecord::Base
  includes:

  attributes:

  methods:
  [RDoc::AnyMethod UbePlan::make_plans_from_lips public
    text:
    "def self.make_plans_from_lips"
      (以下省略)
  RDoc::AnyMethod#comment が String
=====
    Marshal.load(Marshal.dump klass) を ppするとこうなります

[class UbePlan < ActiveRecord::Base
  includes:

  attributes:

  methods:
  [RDoc::AnyMethod UbePlan::make_plans_from_lips public],
  [RDoc::AnyMethod UbePlan::make_plans_from_params public],
      (以下省略)
  RDoc::AnyMethod#comment が RDoc::Markup::Document
<<<<<

リファクタ中にぶつかったトラブルは、これと関わりはなかった
のですが、この違いが気になって質問させていただく次第です。

以上、2点+アルファよろしくお願いします。




In This Thread

Prev Next