Redmine 2.4.3.stable を 2.5.1.stable にアップグレード

Redmine 公式 を参考に。

まずは Requirements を確認して Ruby などのバージョンが適切であることを確かめる。

バックアップ

$ sudo service httpd stop
$ zip -r /path/to/backup/`date +%F`-redmine-files.zip /var/lib/redmine/files/
$ /usr/bin/mysqldump -u <username> -p<password> <redmine_database> | gzip > /path/to/backup/`date +%F`-redmine-db.gz

ファイル置き換え

$ wget http://www.redmine.org/releases/redmine-2.5.1.zip
$ unzip redmine-2.5.1.zip
$ cp /var/lib/redmine/config/database.yml redmine-2.5.1/config
$ cp /var/lib/redmine/config/configuration.yml redmine-2.5.1/config
$ cp -r /var/lib/redmine/files/ redmine-2.5.1/
$ cp -r /var/lib/redmine/plugins/* redmine-2.5.1/plugins/  # 注意を参照

$ sudo mv /var/lib/redmine/ ~/`date +%F`-redmine/
$ sudo mv redmine-2.5.1/ /var/lib/redmine
$ sudo chown -R apache:apache /var/lib/redmine

注意: 公式 に "Make sure that you copy only plugins that are were not initially bundled with your previous Redmine setup.” とあるが、そもそも最初から plugins フォルダには README しか入っていなかったので、おそらく全部コピーしてしまって大丈夫だろう。

bundle install とか

$ cd /var/lib/redmine
$ sudo bundle install --without development test postgresql rmagick
…
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
$ sudo rake generate_secret_token
$ sudo rake db:migrate RAILS_ENV=production
$ sudo rake redmine:plugins:migrate RAILS_ENV=production
$ sudo rake tmp:cache:clear
$ sudo rake tmp:sessions:clear

個人的に加えた変更を適用

app/controllers/files_controller.rb

- sort_init 'filename', 'asc'
+ sort_init 'created_on', ‘desc'

public/stylesheets/application.css

+ /* Make images fit. */
+ div.wiki img {
+   max-width: 100%;
+ }

app/controllers/issues_controller.rb

Redmine.jp によるハック

  def build_new_issue_from_params
    ...
    @issue.author ||= User.current
+     @issue.assigned_to ||= User.current
    ...
  end

lib/redmine/scm/adapters/git_adapter.rb

Git のブランチ名やタグ名として UTF-8 の文字を使った際に起こる問題に対処

--- lib/redmine/scm/adapters/git_adapter.rb.org  Sat Nov 23 17:41:44 2013
+++ lib/redmine/scm/adapters/git_adapter.rb   Wed May 14 10:55:15 2014
@@ -82,11 +82,11 @@
           return @branches if @branches
           @branches = []
           cmd_args = %w|branch --no-color --verbose --no-abbrev|
           git_cmd(cmd_args) do |io|
             io.each_line do |line|
-              branch_rev = line.match('\s*(\*?)\s*(.*?)\s*([0-9a-f]{40}).*$')
+              branch_rev = line.force_encoding('UTF-8').match('\s*(\*?)\s*(.*?)\s*([0-9a-f]{40}).*$')
               bran = GitBranch.new(branch_rev[2])
               bran.revision =  branch_rev[3]
               bran.scmid    =  branch_rev[3]
               bran.is_default = ( branch_rev[1] == '*' )
               @branches << bran
@@ -99,11 +99,11 @@
 
         def tags
           return @tags if @tags
           cmd_args = %w|tag|
           git_cmd(cmd_args) do |io|
-            @tags = io.readlines.sort!.map{|t| t.strip}
+            @tags = io.readlines.sort!.map{|t| t.strip.force_encoding('UTF-8')}
           end
         rescue ScmCommandAborted
           nil
         end

確認

$ sudo service httpd start

管理 > 情報 から Redmine version が 2.5.1.stable となっているのを確認。