Redmine Checklists pluginという、チケットにチェックリストを付与できる大変便利なRedmineのプラグインがあるのですが、チェックに強制力を持たせられないのが困りものです。
(タスクが残ってるのにレビュー依頼とか出されても困る...)
とりあえず上記を解決するにはlib/redmine_checklists/patches/issues_patch.rb
をいじればよいです。
※Railsのルートから見ると、plugins/redmine_checklists/lib/redmine_checklists/patches/issues_patch.rb
issue_patch.rb
require_dependency 'issue'
module RedmineChecklists
module Patches
module IssuePatch
def self.included(base) # :nodoc:
# ~~~ 省略 ~~~
# ここから
validate :complete_tasks
def complete_tasks
# 未チェックの項目が一つでもあると設定できないようにしたいステータスのIDを指定
# この例だと、全部チェックしないとステータスを"解決"(status_id:3)に更新できないようにしている
return unless status_id == 3
return if checklists.all? {|checklist| checklist.is_done}
errors.add(:base, 'チェックリストに未チェックの項目が存在します。タスクを全て完了させてください。')
end
# ここまでを追加
end
end
end
end
end
こうしておくと、タスクを完了させないと怒られるようになります。
プラグインの設定画面でステータスを設定できるようにして、さらにプルリクも送ったらカッコイイと思うんだけど、そんな気力はなかった。