torutkのブログ

ソフトウェア・エンジニアのブログ

redmine trunkを落としてglossary pluginが動くか試してみる

はじめに

Redmine は現在3.4系列がリリースされている最新ブランチで3.4.5がリリースされてました。また、次はメジャーバージョンアップの4.0系列がリリースに向けて開発中です。

Redmine 3.4から4.0への更新では、ベースとなっているRuby on Railsのバージョンが4.2から5.1に変わります。これは大きな更新で、Redmineのエコシステムを支えている多数のプラグインへの影響がいろいろと懸念されます。

Redmineの開発はリポジトリのtrunkで行われているので、redmineリポジトリからtrunkを落とし、その上でglossary plugin(用語集プラグイン)が動くかどうかを試してみることにしました。

動作環境

自宅ではWindows 10マシンを使っていますが、Redmineを動かすなら断然Linuxです。ですが、Linuxマシンを用意できないこともあります。自宅ではそこで、Windows Subsystem for Linux 機能を有効にし、マイクロソフトストアからLinuxディストリビューションをインストールします。
インストールについては次のWikiに記載しています。

Windows Subsystem for Linuxの概要 - ソフトウェアエンジニアリング - Torutk

Redmine 4.0の開発リポジトリから落としてきます。RedmineリポジトリSubversionsvn)で管理されていますが、Gitのミラーリポジトリもあるのでそっちから落としました。svnのtrunkは、Gitではmasterブランチと思われます。

~> git clone https://github.com/redmine/redmine.git

プラグイン開発用にredmineを動かす設定は次のWikiに記載しています。

Redmineプラグイン開発環境 - ソフトウェアエンジニアリング - Torutk

rubyのバージョンが・・・

openSUSE Leap 42.3は、ruby 2.1が標準です。しかし、Ruby on Rails 5.1は、ruby 2.2以上を要求するのでこのままでは動きません。運用環境ではrbenvは好まないのですが、Windows Subsystem for Linuxはほぼ個人環境なのでrbenvでもいいかと思いこれでrubyの新しいバージョンを利用します。

まずrubyのビルドに必要な追加パッケージを入れておきます。

~> sudo zypper install readline-devel openssl-devel

rbenvの環境を用意します。

~> git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
  :(略)
~> git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

環境設定にrbenvを追加します。

~> echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
~> echo 'eval "$(rbenv init -)"' >> ~/.bashrc

新たにbashを起動し、rbenvでrubyをインストールします。

~> rbenv install --list
Available versions:
  1.8.5-p52
  1.8.5-p113
    :(中略)
  2.5.0
  2.5.1
  2.6.0-dev
  2.6.0-preview1
  jruby-1.5.6
    :(後略)

と出るので、最新リリース版の2.5.1を入れます。

~> rbenv install 2.5.1
Downloading ruby-2.5.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.bz2
Installing ruby-2.5.1...
  :(ここで時間がかかる)
Installed ruby-2.5.1 to /home/toru/.rbenv/versions/2.5.1
~>

インストールされているrubyバージョンの確認をします。

~> rbenv versions
* system (set by /home/toru/.rbenv/version)
  2.5.1

システム(openSUSE標準パッケージのruby 2.1)が選択されています。そこで、今入れた2.5.1を使うよう設定します。

~> rbenv global 2.5.1
~> rbenv versions
  system
* 2.5.1 (set by /home/toru/.rbenv/version)

rubyのバージョンを切替えた後でbundlerを入れますが、gemの中にnativeビルドするものがあるのでOS標準パッケージを追加しておきます。

~> sudo zypper install autoconf

次のOS標準パッケージも必要でしたので入れておきます。

~> sudo zypper install timezone

Glossaryプラグインを入れる

plugin> git clone https://github.com/torutk/redmine_glossary.git

プラグインマイグレーション実行でエラーになりました。

> bundle exec rake redmine:plugins:migrate
rake aborted!
NoMethodError: undefined method `alias_method_chain' for ActionView::Helpers::AssetTagHelper:Module
Did you mean?  alias_method
  :
>

Ruby on Rails 5で抹消されるAPIの一つ alias_method_chain でエラーがやはり発生しました。

ということで、Redmine 4.0リリースに向けてプラグインの対応が必要なことが再確認できました。