チケットをCSV出力するとInternal error(500)になります。

426 views
Skip to first unread message

sat

unread,
Mar 11, 2010, 8:29:25 PM3/11/10
to Redmine Users (japanese)
お世話になります。

チケットの一覧の画面から下部の"CSV"をクリックするとInternal errorになります。
この現象はデータによるもので、dbを違うものに差し替えると再現しません。
redmineを0.8から0.9に上げる際に発見しました。
Redmine 0.8.7.stable.3479 (SQLite)だと問題なく動作し、
Redmine 0.9.2.devel.3487 (SQLite)と
Redmine 0.9.3.stable.3561 (SQLite)で発生します。

====以下ログより===============
NoMethodError (undefined method `name' for nil:NilClass):
app/helpers/issues_helper.rb:178:in `issues_to_csv'
app/helpers/issues_helper.rb:168:in `each'
app/helpers/issues_helper.rb:168:in `issues_to_csv'
lib/faster_csv.rb:1053:in `generate'
app/helpers/issues_helper.rb:141:in `issues_to_csv'
app/controllers/issues_controller.rb:83:in `index'
app/controllers/issues_controller.rb:79:in `index'
/usr/lib/ruby/1.8/mongrel.rb:159:in `process_client'
/usr/lib/ruby/1.8/mongrel.rb:158:in `each'
/usr/lib/ruby/1.8/mongrel.rb:158:in `process_client'
/usr/lib/ruby/1.8/mongrel.rb:285:in `run'
/usr/lib/ruby/1.8/mongrel.rb:285:in `initialize'
/usr/lib/ruby/1.8/mongrel.rb:285:in `new'
/usr/lib/ruby/1.8/mongrel.rb:285:in `run'
/usr/lib/ruby/1.8/mongrel.rb:268:in `initialize'
/usr/lib/ruby/1.8/mongrel.rb:268:in `new'
/usr/lib/ruby/1.8/mongrel.rb:268:in `run'

Rendering /var/www/are/public/500.html (500 Internal Server Error)
====ログここまで===============

app/helpers/issues_helper.rbで178行目の「issue.author.name,」をコメントアウトすると
列の内容はずれますがとりあえず出力されます。
認証はldapですが、ローカルアカウントでログインしても、しなくても状況はかわりません。

どこを修正したら良いでしょうか?ご教授ください。

ubuntu9.10server
ruby 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
rake-0.8.7
rails-2.3.5

fmkt

unread,
Mar 11, 2010, 8:37:45 PM3/11/10
to Redmine Users (japanese)
こんにちは。

エラーになる原因まではわかりませんが(authorは作成者だっけな?それが空っていうのがわからないので・・・)、

178行目 を以下のように変更されてはいかがでしょうか?

issue.author ? issue.author.name : "",

authorがいないとき、空文字を入れています。
csvのとき空文字だとまずければ "" の部分を "不明" とかにされると良いかもしれません。

sat

unread,
Mar 11, 2010, 11:07:21 PM3/11/10
to Redmine Users (japanese)
ありがとうございます。

確かにこの修正で出るようになりました。ありがとうございます
今回はDBのusersテーブルのType列に値が入っていないユーザーが作成した
チケットが作成者として呼べていませんでした。チケットのデータにはauthor_idが入っていたので
登録時では無いともうのですが、ちょっと今となっては不明です。
とりあえず、DBを修正することで解決しようと思います。

繰り返しになりますが、ありがとうございました。

Reply all
Reply to author
Forward
0 new messages