これまでのおさらい
前回
今回は開発からは離れてこれまで紹介できなかった内容などを解説していきます。
落ち穂拾い
これまで紹介していなかった中で重要な項目をいくつかピックアップして解説していきます。今回紹介するのは以下の3つです。
- 国際化
(多言語対応) - Routes
- フック
国際化(多言語対応)
Redmineは標準で様々な言語に対応していますが、
ではContinuousDeploymentプラグインの一部を国際化してみましょう。まずは言語ファイルです。
en:
button_exec_deploy: Deploy!
text_confirm_deploy: Are you sure you want to deploy?
ja:
button_exec_deploy: デプロイ!
text_confirm_deploy: デプロイします。よろしいですか?
アプリ側からメッセージを読み込むには 「l」 というメソッドの引数に言語ファイルで定義したラベルを指定します。
<%= button_to l(:button_exec_deploy), { :action => "deploy", :project_id => params[:project_id] }, :confirm => l(:text_confirm_deploy) %>
若干の手間はかかりますが、
Routes
これまでいくつかコントローラを作成してきましたが、
Redmineでは PLUGIN_
ContinuousDeploymentプラグインで試してみましょう。
ActionController::Routing::Routes.draw do |map|
map.with_options :controller => 'deployments' do |deployments|
deployments.connect 'projects/:project_id/deployments', :action => 'index'
deployments.connect 'projects/:project_id/deployments/:id', :action => 'show', :id => /\d+/
deployments.connect 'projects/:project_id/deployments/:action/:id'
end
end
これで再起動すると、
Routesの詳細についてはRedmineではなくRailsのドキュメントをご参照ください。また、
また、
ActionController::Routing::Routes.draw do |map|
map.resources :servers
end
フック
これまでとはちょっと毛色が変わる話になりますが、
rake redmine:plugins:hook_list
今回はServerStatusプラグインの拡張として、
class IssueHook < Redmine::Hook::Listener # ①
def controller_issues_edit_after_save(context) # ②
journal = context[:journal] # ③
return if journal.nil? || !journal.new_record?
if journal.notes =~ /stopped\s+#([^\s]+)/ # ④
if server = Server.find_by_name($1)
server.update_attributes!(:status => Server::Status::STOPPED)
end
end
end
end
まずフックは Redmine::Hook::Listener と言うクラスを継承する必要があります
call_hook(:controller_issues_edit_after_save, { :params => params, :issue => @issue, :time_entry => @time_entry, :journal => journal})
ここまで分かれば後は簡単です。context からチケットのコメントの実体となる journalオブジェクトを取得し
作成したフックは init.
require 'issue_hooks'
なぜrequireするだけでよいのか不思議に思われる方もいるかもしれません。
Redmineではフックへの登録はRedmine::Hook::Listener#inheritedメソッドで行われており、
フックは実装こそシンプルですが、
社内用プラグインのススメ
さて、
ExcelとBTS
Excelはもう古いと言われているしBTSに興味はあるが、
Excelには不便な点が多々ありますが、
これに対してTracとRedmineの最近のバージョンではチケットのワークフローをカスタマイズできるようになるなど、
システムと業務をつなぐプラグイン
そうした状況において、
Redmineを導入したいが今のプロジェクトとはここが合わない…などと悩まれている方は、
おわりに
さて、
Redmineはプラグインなども含め、
本記事がRedmineによって円滑なプロジェクト運営を目指す皆さんへの一助になれば幸いです。