第11回 RxTstudy「Redmine Plugin 活用最前線」
July 12, 2014
LTのスライド (Redmine with Sidekiq)
Sidekiq UI
を使える認可処理を実装しています。2.5.2
で追加されたプラグインのアップデートを確認する対応でURL
を変更しました。これは非同期処理のworker class
です。
チケットのステータスを変更するだけの単純な例です。
class SandboxWorker
include Sidekiq::Worker
sidekiq_options retry: 2
def perform(name=nil, count=nil)
puts 'Doing sandbox work'
Issue.all.each do |issue|
issue.status_id += 1
issue.save
end
end
end
非同期処理の活用で面白いプラグインができると良いですね。
Let the ticket monitoring by async!
飯田治行さん(@haru_iida)のセッションで「RedmineのER図はありますか?」の質問があって 「Rails ERDで出力できます!」と応えました。
休憩時間にER図を見せよと思ってbundle exec erd
コマンドを実行 …
… 処理が終わらない! モデルが60以上あって関連が複雑だから \(^o^)/
野田誠人さん(@pinzolo)のセッション中に関心のあるモデルだけのER図を出力する プラグインを爆速で作ることに成功! 次のLT(非同期 Redmine)でER図を紹介できました。
紹介したER図はこちらです。 このプラグインの作り方も紹介します。
generate
コマンドで簡単にPluginが作れます。今回はProject
に関連を持った5つのモデルをER図にしました。
$ bundle exec rails generate redmine_plugin redmine_draw_erd
$ echo "gem \"rails-erd\"" > ./plugins/redmine_draw_erd/Gemfile
$ mkdir -p ./plugins/redmine_draw_erd/lib/tasks/redmine/draw
$ cat << __EOS__ > ./plugins/redmine_draw_erd/lib/tasks/redmine/draw/erd.rake
require "rails_erd/diagram/graphviz"
namespace :redmine do
namespace :draw do
desc "Generate Entity Relationship Diagrams"
task erd: :environment do
options = {
filetype: :png,
attributes: [:foreign_keys, :primary_keys, :content],
title: "Project",
only: [:Project, :Member, :Issue, :Version, :News],
filename: File.join(File.expand_path('tmp/pdf', Rails.root), "project")
}
Rails.application.eager_load!
RailsERD::Diagram::Graphviz.create(options)
end
end
end
__EOS__
rake redmine:draw:erd
コマンドでER図が出力されます。当日は出力するモデルを検討したので実装に5分
ほどかかりましたが
この手順でコマンドを入力するだけだと30秒
でプラグインの作成からER図の表示が完了します。
$ bundle install
$ bundle exec rake redmine:draw:erd
$ open ./tmp/pdf/project.png
このPluginはGithubに公開しています。 (redmine.orgにはもう少し手を加えてから登録します。)