作業時間の記録で詳細 やレポート表示でエラーになる。

656 views
Skip to first unread message

loure...@gmail.com

unread,
Jun 12, 2014, 6:26:52 AM6/12/14
to redmine-...@googlegroups.com
山下と申します。
始めて投稿させて頂きます。よろしくお願いします。

時間トラッキングのモジュールを使用可能にした状態でチケットを作り、「時間を記録」しました。
その後「概要」にある作業時間の記録「詳細」や「レポート」のリンクに飛ぶと internal error になります。

具体的なURLだとtime_entriesに飛んだときです。

NoMethodError (undefined method `[]' for nil:NilClass):
オブジェクトが定義されていないのが原因のようですが、SQLからは原因となるような箇所は見つけられませんでした。

原因となるヒントがあればご教示頂ければと思います。

よろしくお願いいたします。

■ログの内容です。
Started GET "/projects/p00054/issues/37/time_entries" for 124.25.124.206 at 2014-06-12 19:13:51 +0900
Processing by TimelogController#index as HTML
  Parameters: {"project_id"=>"p00054", "issue_id"=>"37"}
   (0.6ms)  SELECT MAX(`settings`.`updated_on`) AS max_id FROM `settings`
  User Load (0.4ms)  SELECT `users`.* FROM `users` WHERE `users`.`type` IN ('User', 'AnonymousUser') AND `users`.`status` = 1 AND `users`.`id` = 1 LIMIT 1
  Current user: na...@hoge.jp (id=1)
  Issue Load (0.3ms)  SELECT `issues`.* FROM `issues` WHERE `issues`.`id` = 37 LIMIT 1
  Project Load (0.7ms)  SELECT `projects`.* FROM `projects` WHERE `projects`.`id` = 65 LIMIT 1
  SQL (0.4ms)  SELECT `enabled_modules`.`name` FROM `enabled_modules` WHERE `enabled_modules`.`project_id` = 65
  Principal Load (0.9ms)  SELECT DISTINCT `users`.* FROM `users` INNER JOIN `members` ON `members`.`user_id` = `users`.`id` WHERE `users`.`status` = 1 AND (members.project_id = 65)
  TimeEntryActivity Load (0.4ms)  SELECT `enumerations`.* FROM `enumerations` WHERE `enumerations`.`type` IN ('TimeEntryActivity') AND `enumerations`.`project_id` = 65 ORDER BY enumerations.position ASC
   (0.6ms)  SELECT COUNT(*) FROM `enumerations` WHERE `enumerations`.`type` IN ('TimeEntryActivity') AND `enumerations`.`project_id` IS NULL AND `enumerations`.`active` = 1
  TimeEntryActivity Load (0.4ms)  SELECT `enumerations`.* FROM `enumerations` WHERE `enumerations`.`type` IN ('TimeEntryActivity') AND `enumerations`.`project_id` IS NULL AND `enumerations`.`active` = 1 ORDER BY enumerations.position ASC
  TimeEntryCustomField Load (0.4ms)  SELECT `custom_fields`.* FROM `custom_fields` WHERE `custom_fields`.`type` IN ('TimeEntryCustomField') AND `custom_fields`.`is_filter` = 1 ORDER BY custom_fields.position ASC
  CustomField Load (0.5ms)  SELECT `custom_fields`.* FROM `custom_fields` WHERE `custom_fields`.`is_filter` = 1
Completed 500 Internal Server Error in 28.9ms

NoMethodError (undefined method `[]' for nil:NilClass):
  app/models/query.rb:343:in `add_filter'
  app/models/time_entry_query.rb:35:in `initialize'
  app/models/query.rb:231:in `new'
  app/models/query.rb:231:in `build_from_params'
  app/controllers/timelog_controller.rb:45:in `index'

■サーバー環境
Environment:
  Redmine version                2.5.0.stable
  Ruby version                   2.0.0-p451 (2014-02-24) [x86_64-linux]
  Rails version                  3.2.17
  Environment                    production
  Database adapter               Mysql2
SCM:
  Subversion                     1.6.11
  Git                            1.8.5.5
  Filesystem                     
Redmine plugins:
  projects_table                 0.0.4
  redmine_already_read           0.0.3
  redmine_startpage              0.1.0
  redmine_vividtone_my_page_blocks 1.2 (20120610)
  redmine_wiki_extensions        0.6.4
  redmine_work_time              0.2.14

プラグインは下記を入れています。
Projects Table plugin
Redmine Already Read plugin
Redmine Startpage plugin
My Page Blocks plugin
Redmine Wiki Extensions plugin
Redmine Work Time plugin

前田 剛

unread,
Jun 13, 2014, 12:59:07 AM6/13/14
to redmine-...@googlegroups.com
 前田と言います。


2014年6月12日 19:26 <loure...@gmail.com>:
> 時間トラッキングのモジュールを使用可能にした状態でチケットを作り、「時間を記録」しました。
> その後「概要」にある作業時間の記録「詳細」や「レポート」のリンクに飛ぶと internal error になります。
>
> 具体的なURLだとtime_entriesに飛んだときです。
> http://hoge.jp/projects/p00054/issues/37/time_entries
>
> NoMethodError (undefined method `[]' for nil:NilClass):


 まずはプラグインが影響していないか切り分けをしてみてはいかがで
しょうか。


* プラグインをすべて外した状態で現象が再現するか
* プラグインを外すとうまくいくのであれば、どのプラグインを入れると
問題が発生するのか


--
// 前田 剛 <ma...@farend.jp>

loure...@gmail.com

unread,
Jun 13, 2014, 7:32:46 PM6/13/14
to redmine-...@googlegroups.com
前田様

ご返信ありがとうございます。

>まずはプラグインが影響していないか切り分けをしてみてはいかがで しょうか。 

一旦全てのプラグインを外したところ動作しました。
そこで1つづつ設置しなおしていったところ「redmine_already_read」を導入するとエラーになることが分かりました。

同じようなコメントがついていたので症状は同じかと思いますが、その後どうなったのかが不明のままです....。

何か情報をお持ちの方はいらっしゃいますでしょうか。

よろしくおねがいします。

nobu_toyofuku

unread,
Jun 17, 2014, 12:44:23 AM6/17/14
to redmine-...@googlegroups.com

2014年6月12日木曜日 19時26分52秒 UTC+9 loure...@gmail.com:

時間トラッキングのモジュールを使用可能にした状態でチケットを作り、「時間を記録」しました。
その後「概要」にある作業時間の記録「詳細」や「レポート」のリンクに飛ぶと internal error になります。
  ...
NoMethodError (undefined method `[]' for nil:NilClass):
  app/models/query.rb:343:in `add_filter'
   ...
Redmine version 2.5.0.stable

ちょっと気になる点が。Redmine version 2.5.0 の app/models/query.rb は

343:    if available_filters.has_key? field
344:     filter_options = available_filters[field]
345:      filters[field] = {:operator => operator, :values => (values || [''])}
346:    end

となっていて [] でエラーがでるのは 344行か345行ででそうな気がするのですが
ログでは 343行になってますよね。
何か app/models/query.rb に変更が入っていますか。
---

 

nobu_toyofuku

unread,
Jun 17, 2014, 2:36:34 AM6/17/14
to redmine-...@googlegroups.com

2014年6月17日火曜日 13時44分23秒 UTC+9 nobu_toyofuku:
ちょっと気になる点が。Redmine version 2.5.0 の app/models/query.rb は

343:    if available_filters.has_key? field
344:     filter_options = available_filters[field]
345:      filters[field] = {:operator => operator, :values => (values || [''])}
346:    end

となっていて [] でエラーがでるのは 344行か345行ででそうな気がするのですが
ログでは 343行になってますよね。

redmine_already_read/lib/already_read/query_patch.rb で available_filters を再定義してますね。
上記の 343行の available_filters がその再定義されたメソッドでその中でエラーになった?
ログにはその情報は出ないのだろうか。
---

nobu_toyofuku

unread,
Jun 17, 2014, 2:49:12 AM6/17/14
to redmine-...@googlegroups.com

2014年6月17日火曜日 15時36分34秒 UTC+9 nobu_toyofuku:
ログにはその情報は出ないのだろうか。

これは独り言で、ログを調べてくれという意味ではありませんので。念のため。
---
 

nobu_toyofuku

unread,
Jun 17, 2014, 3:34:20 AM6/17/14
to redmine-...@googlegroups.com

2014年6月17日火曜日 15時36分34秒 UTC+9 nobu_toyofuku:

redmine_already_read/lib/already_read/query_patch.rb で available_filters を再定義してますね。
上記の 343行の available_filters がその再定義されたメソッドでその中でエラーになった?
ログにはその情報は出ないのだろうか。

再定義されたメソッドの中で例外が発生していました。(ログに残らない仕組みはわかってないけど)
取りあえず落ちないようにするパッチを以下につけます。
正式にはどう直すべきなのかは redmine_already_read の作者の方に相談ください。

--- plugins/redmine_already_read/lib/already_read/query_patch.rb.org
+++ plugins/redmine_already_read/lib/already_read/query_patch.rb
@@ -19,7 +19,7 @@
       available_filters_without_already_read

       if !has_filter?('already_read')
-        @available_filters['already_read'] = {:type => :list, :order => 20, :values => @available_filters['author_id'][:values], :name => l(:field_already_read)}
+        @available_filters['already_read'] = {:type => :list, :order => 20, :values => @available_filters['author_id'] ? @available_filters['author_id'][:values]: '', :name => l(:field_already_read)}
       end

       return @available_filters
 

loure...@gmail.com

unread,
Jun 17, 2014, 7:26:08 AM6/17/14
to redmine-...@googlegroups.com
nobu_toyofuku 様

お返事ありがとうございます。

結論から申しますと、頂いたパッチの内容でエラーが出ることなく作業時間・レポートが表示出来るようになりました。
大変助かりました。ありがとうございます。


以下補足記入させて頂きます。

>ログでは 343行になってますよね。
>何か app/models/query.rb に変更が入っていますか。

再度ログを確認してみましたが、やはりエラーの個所は app/models/query.rb:343:in `add_filter' でした。
query.rb には変更はありません。
その他気になるようなエラーも特に見当たりませんでした。


nobu_toyofuku

unread,
Jun 17, 2014, 8:00:20 AM6/17/14
to redmine-...@googlegroups.com

2014年6月17日火曜日 20時26分08秒 UTC+9 loure...@gmail.com:
結論から申しますと、頂いたパッチの内容でエラーが出ることなく作業時間・レポートが表示出来るようになりました。

動くようになって何よりです。
ただし前のメールにも書いたように取りあえず落ちないようにしただけですので
今回とは別の場所で不具合が出るかもしれません。
redmine_already_read プラグインの作者に報告した正式に直してもれった方がよいと思います。

>何か app/models/query.rb に変更が入っていますか。

再度ログを確認してみましたが、やはりエラーの個所は app/models/query.rb:343:in `add_filter' でした。
query.rb には変更はありません。
その他気になるようなエラーも特に見当たりませんでした。

はい、自分でも同じ現象になることを確認しました。(最初からそうしとけばよかったのですが)
混乱させて失礼しました。
---

loure...@gmail.com

unread,
Jun 17, 2014, 11:47:23 AM6/17/14
to redmine-...@googlegroups.com

ただし前のメールにも書いたように取りあえず落ちないようにしただけですので
今回とは別の場所で不具合が出るかもしれません。
redmine_already_read プラグインの作者に報告した正式に直してもれった方がよいと思います。

製作者様の連絡先が判らず、こちらに投稿させて頂いたという経緯もありますが、
githubのアドレスは判りますので、そちらのIssueで報告させて頂きました。

丁寧なお返事ありがとうございました。

loure...@gmail.com

unread,
Jun 19, 2014, 6:01:36 AM6/19/14
to redmine-...@googlegroups.com

redmine_already_read の作者様に対応して頂きました。

新バージョンがリリースされています。

以上、ご報告まで。

Reply all
Reply to author
Forward
0 new messages