undefined method `categories'
blex 0.0.6 ページの編集登録で undefined method `categories'
2012-01-09: 《解決》 close
version: blex α6 preliminary 暫定版
障害発生: ページの編集、登録で発生。常にエラーとなるページ(1322319600.html)と、問題がなく登録できるページ(ここ)がある。
補足説明: ページの登録そのものは行われている。whatsnew-list は更新されていない。
障害表示:
500 Internal Server Error undefined method `categories' for nil:NilClass (NoMethodError) (plugin/20blog-category.rb):119:in `block in blog_category_cache_add' /usr/local/lib/ruby/1.9.1/pstore.rb:326:in `block (2 levels) in transaction' /usr/local/lib/ruby/1.9.1/pstore.rb:325:in `catch' /usr/local/lib/ruby/1.9.1/pstore.rb:325:in `block in transaction' <internal:prelude>:10:in `synchronize' /usr/local/lib/ruby/1.9.1/pstore.rb:317:in `transaction' /usr/local/share/tdiary311/tdiary/compatible.rb:20:in `transaction' (plugin/20blog-category.rb):117:in `blog_category_cache_add' (plugin/20blog-category.rb):178:in `block (2 levels) in load_plugin' /usr/local/share/tdiary311/tdiary/plugin.rb:135:in `call' /usr/local/share/tdiary311/tdiary/plugin.rb:135:in `block in update_proc' /usr/local/share/tdiary311/tdiary/plugin.rb:134:in `each' /usr/local/share/tdiary311/tdiary/plugin.rb:134:in `update_proc' /usr/local/share/tdiary311/tdiary.rb:611:in `block in do_eval_rhtml' /usr/local/share/tdiary311/tdiary.rb:611:in `instance_eval' /usr/local/share/tdiary311/tdiary.rb:611:in `do_eval_rhtml' /usr/local/share/tdiary311/tdiary.rb:170:in `eval_rhtml' /usr/local/share/tdiary311/tdiary/dispatcher/update_main.rb:31:in `run' /usr/local/share/tdiary311/tdiary/dispatcher/update_main.rb:6:in `run' /usr/local/share/tdiary311/tdiary/dispatcher.rb:21:in `dispatch_cgi' /usr/local/share/tdiary311/update.rb:36:in `<top (required)>' <internal:lib/rubygems/custom_require>:29:in `require' <internal:lib/rubygems/custom_require>:29:in `require' /home/koh/html/dev/update.rb:9:in `<main>
解決
2012-01-09:
@diariesをBLEXクラスに引き継いで、処理している。
ポインタ渡しのため、意図せず、内容が更新されていた。
かつ、BLEXクラス中で、@mode=update 時に必要がないにもかかわらず、@diaries を独自に作成して、更新していた。
(つまり、pluginクラスの@diariesが更新される)
そのため、更新時の記事が、BLEXが更新した最近の@diariesに存在しない古い日付の場合、エラーが発生。
2012-01-10: BLEXクラスで、@diariesの更新が必要なモードを再度見直すことで、解消。
作成: 2012年1月7日
更新: 2012年1月20日
カテゴリ: close