undefined method `add_referer'
blex 0.0.6 暫定版 ページのトップページ表示でエラー undefined method `add_referer'
version: blex α6 preliminary 暫定版
障害発生: $blex_start=index で、トップページとしてカテゴリ'index'を表示しようとしてエラー発生。
補足説明: blex_index.rb で、トップページ表示の指定 ($blex_start)を設定するとエラーが起こることがある。
常にエラーとなる(このサイト)と、問題がないサイト (www.kohashi.org)がある。環境は同一に見える(実際は何か条件や設定が違っているに違いない)。
$blex=startをコメントにすると、このエラーは発生しない。
状況分析:
$blex_start='index'を設定時: method referer_save_triggerでエラー。
@dateが取得できず、結果として、diaryがセットされず、nil.add_referでエラーが発生している。
通常使用では問題がないので、blex_index.rb が原因を作っている。
diariesを取得するために、blexの本体 plugin で、TDiaryMonthWithoutFilter を使っている。そのタタリ(副作用)か…
blex-index.rb 抜粋:
... if @cgi.params.empty? and $blex_start and index_catdays[$blex_start] and index_catdays[$blex_start].keys.size == 1 @cgi.params['blogcategory'] = [ $blex_start ] @cgi.params['date'] = index_catdays[$blex_start].keys ...
plugin/05referer.rb 抜粋:
def referer_save_trigger return unless @conf.io_class.to_s == 'TDiary::DefaultIO' return unless @mode =~ /^(latest|day|edit|append|replace)$/ if @date then diary = @diaries[@date.strftime( '%Y%m%d' )] diary.clear_referers if diary end referer_update( diary ) end
障害表示:
500 Internal Server Error undefined method `add_referer' for nil:NilClass (NoMethodError) (plugin/05referer.rb):214:in `referer_save_current' (plugin/05referer.rb):122:in `referer_update' (plugin/05referer.rb):25:in `referer_save_trigger' (plugin/05referer.rb):13:in `block (2 levels) in load_plugin' d:/usr/local/share/tdiary311/tdiary/plugin.rb:112:in `call' d:/usr/local/share/tdiary311/tdiary/plugin.rb:112:in `block in header_proc' d:/usr/local/share/tdiary311/tdiary/plugin.rb:111:in `each' d:/usr/local/share/tdiary311/tdiary/plugin.rb:111:in `header_proc' (TDiary::Plugin#eval_src):5:in `block in eval_src' d:/usr/local/share/tdiary311/tdiary/plugin.rb:100:in `eval' d:/usr/local/share/tdiary311/tdiary/plugin.rb:100:in `block in eval_src' d:/usr/local/share/tdiary311/tdiary/core_ext.rb:82:in `block in safe' d:/usr/local/share/tdiary311/tdiary/core_ext.rb:80:in `call' d:/usr/local/share/tdiary311/tdiary/core_ext.rb:80:in `safe' d:/usr/local/share/tdiary311/tdiary/plugin.rb:99:in `eval_src' d:/usr/local/share/tdiary311/tdiary.rb:235:in `do_eval_rhtml' d:/usr/local/share/tdiary311/tdiary.rb:170:in `eval_rhtml' d:/usr/local/share/tdiary311/tdiary.rb:885:in `eval_rhtml' d:/usr/local/share/tdiary311/tdiary/dispatcher/index_main.rb:43:in `run' d:/usr/local/share/tdiary311/tdiary/dispatcher/index_main.rb:6:in `run' d:/usr/local/share/tdiary311/tdiary/dispatcher.rb:21:in `dispatch_cgi' d:/usr/local/share/tdiary311/blex-index.rb:117:in `<top (required)>' <internal:lib/rubygems/custom_require>:29:in `require' <internal:lib/rubygems/custom_require>:29:in `require' d:/home/koh/html/dev/index.rb:20:in `<main>'
blex#007で、@diariesを正しい内容を生成するように更新
2012-01-20: 障害は発生しなくなった。これで良いのだろうか。
作成: 2012年1月4日
更新: 2012年1月20日
カテゴリ: close