[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 のどちらで発生します.