[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:02273] Re: NoMethod Error



鳩野さん,乃村です.

お手元のscriptの 382行というのは,
下記の辺りの行でしょうか.
手元の CVS 先端とは,少しずれているようです.

      if !$flag_noharm
        db .modify_sch(l_sch)
      else
→      STDERR .print "C:modifiying #{l_sch .info}\n"
        STDERR .print "*" * 70, "\n"
        STDERR .print l_sch .dump
        STDERR .print "*" * 70, "\n"
      end

だととすると,これより少し前で呼んでいる get_record_by_id() が
nil を返していると思われます.つまり,remote で存在する
X-SC-Record-Id: hoge に対応する
アーティクルが local には,存在しないのではないかと.

88行目付近の get_record_by_id() に手を入れて,

  def get_record_by_id(record_id)
    if @record_id_to_path_hash[record_id]
      return MhcScheduleItem .new(@record_id_to_path_hash[record_id])
    else
→    STDERR.print("not found in local: #{record_id}\n"
      return nil
    end
  end

としてみて,問題の record_id が何であるか分かりませんでしょうか.
分かったら,remote, local の Mail/schedule 以下から grep してみると,
何か分かるかもしれません.

更に,remote, local 両者で Mail/schedule/.mhc-db-log を見て,
問題の record_id に対する操作の追跡をしてみると操作履歴が分かります.

本エラーは,ちなみに,ruby のバージョンに関係なく,
以下の操作でも再現できるエラーだと思います.

  (1) remote: ある X-SC-Id: hoge の記事を変更する (mhc 正規の方法)
  (2) local:  X-SC-Id: hoge の同じ記事を変更する  (mhc 正規の方法)
  (3) local : X-SC-Id: hoge の同じ記事を削除する (mhc を使わない rm 等で)

お心辺りはないでしょうか.
--
nom

On Tue, 09 Oct 2007 11:45:14 +0900 (JST),
	hatono@xxxxxxxxxxxx (Itsuo HATONO) said:

> 鳩野と申します.
> 
> mhcを便利に利用させて頂いております.
> 
> ある時から,(あるrubyのバージョンから?)
> 
> 
> Initalizing remote (exchange_id=tebaldi) ... done.
> ---------------------------------------------------
> /usr/local/bin/mhc-sync:382: undefined method `info' for nil:NilClass (NoMethodError)
>         from /usr/local/bin/mhc-sync:329:in `each'
>         from /usr/local/bin/mhc-sync:329
> 
> のようなエラーが出て,mhc-sync が動作しなくなってしまいました.
> 
> rubyのコードを少し追いかけてみたのですが,理由は不明です.
> 
> rubyはプログラミングしたことがないのでよくわからないのですが,
> mhc-syncの最初の方に,
> 
> class MhcScheduleItem
>   def info
>     ret = format("%s (first occurred %s)", subject, occur_min .to_s1('-'))
>     return Kconv::kconv(ret, $KANJI_CODE, true)
>   end
> end
> 
> と MhcScheduleItem のクラスの上書き(たぶんライブラリにある方のクラスは
> 継承される?)されていますが,rubyのバージョンでこのあたりの動作が変わっ
> たのかなとも思います.
> 
> mhc-sync の最初のこの定義を mhc-schedule.rb に移しても動作は同じでした.
> 
> ruby 1.8.5/1.8.6 のどちらで発生します.