↑先頭 最新 検索 追記 編集

dev : サイト開発と blex のサイト



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