redmineで複数リポジトリを登録したらリポジトリや設定ページが500エラー

redmine 1.3では、リポジトリを複数設定できて便利になりましたね。

開発者以外にgitリポジトリを見せるのは地味に面倒なので、redmineに統合されているのは助かります。
gitはsvnと違って部分チェックアウトが出来ないぶん、複数リポジトリ登録機能は必須です。

さて今回は、1プロジェクトに3つめのリポジトリを設定したら、500 Internal Server Errorになってしまいました。
ログを見ると以下のようになっています。


ActionView::TemplateError (undefined method `<=>' for nil:NilClass) on line #64 of app/views/repositories/show.html.erb:
61: <% if @repositories.size > 1 %>
62: <% content_for :sidebar do %>
63:

<%= l(:label_repository_plural) %>

64: <%= @repositories.sort.collect {|repo|
65: link_to h(repo.name),
66: {:controller => ‘repositories’, :action => ‘show’, :id => @project, :repository_id => repo.identifier_param, :rev => nil, :path => nil},
67: :class => ‘repository’ + (repo == @repository ? ‘ selected’ : ”)

app/models/repository.rb:144:in `<=>’
app/views/repositories/show.html.erb:64
app/helpers/application_helper.rb:1017:in `content_for’
app/views/repositories/show.html.erb:62
app/controllers/repositories_controller.rb:102:in `show’

原因は、メインで無いのにidentifierがnilのrepositoriesレコードが存在したこと。並び替えの部分でnilエラーが出ていますね。

今回は以下のようなSQL文で回避しました。
UPDATE repositories SET identifier = 'sub_repository_1' WHERE id = 81;

修正パッチを送ろうと思ったら、既に修正済みみたいです。
http://www.redmine.org/issues/10827

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

baba

ゆとりプログラマー。 高校時代から趣味でプログラミングを初め、そのままコードを書き続けて現在に至る。慶應義塾大学環境情報学部(SFC)卒業。BPS設立初期に在学中から参加している最古参メンバーの一人。Ruby on Rails、PHP、Androidアプリ、Windows/Macアプリ、超縦書の開発などを気まぐれにやる。軽度の資格マニアで、情報処理技術者試験(15区分 + 情報処理安全確保支援士試験)、技術士(情報工学部門)、CITP、Ruby Programmer Goldなどを保有。

babaの書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ