Tech Racho エンジニアの「?」を「!」に。
  • ライフ
  • 開発

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


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。