Rabbit Slide Show

削除操作 しない・させない・ゆるさない

2023-07-07

Description

[Redmine Japan Vol.3](https://redmine-japan.org/timetable/#b07-1) の発表資料 2023-07-07に開催された.

Text

Page: 1

削除操作 しない させない ゆるさない
西田雄也
ネットワーク応用通信研究所
2023-07-07
Powered by Rabbit 3.0.3

Page: 2

自己
紹介

Page: 3

自己紹介
西田雄也 ネットワーク応用通信研究所
Ruby City MATSUE(島根県)から参りました!
GitHub: https://github.com/nishidayuya
Twitter: https://twitter.com/nishidayuya
趣味ではなにかツールを作っています.
dpu: Git作業ディレクトリ上のパスを指定するとタグあるいはコミット
IDを用いたGitHub.com上で参照可能なURIを生成する.
2023-09-16の松江 Ruby 会議10でしゃべります.
2/34

Page: 4

削除操作
のお話

Page: 5

削除操作のお話
Redmineでの各種削除操作
ユーザーの削除
プロジェクトの削除
Issueの削除
Issueのコメントの削除
Issueのウォッチャーの削除
Wikiページの削除
フォーラムの削除
フォーラムのメッセージの削除
…
4/34

Page: 6

削除すると
(あたりまえですが)削除したものは残らない
履歴にも残さない
Redmine標準では復活させる機能はない
↓
削除前に警告される.
しかしながら,気がつくのは大抵削除した後…
↓
ではどうするか?
5/34

Page: 7

削除操作
しない!

Page: 8

削除操作 しない!
いくつかは代わりの手段がある.
ユーザー: 「ロック」すればいい.ログインできなくなる.
プロジェクト: 「アーカイブ」すればいい.
プロジェクト一覧やプロジェクト選択肢にあらわれなくなる.
Issue: ステータスを「却下」のような
「終了したチケット」フラグがオンのものにすればいい.
これらの手段なら画面上から簡単に復活できる.
7/34

Page: 9

削除はしなくていいけれど
「チケットを削除」見えると使いたくなってしまう.
疲れているときとか忘れて削除しちゃうかもしれない.
削除しなくていいことを共有してなかったメンバーは?
↓
ではどうするか?
8/34

Page: 10

削除操作
させない!

Page: 11

削除操作 させない!
4つの方法
1. ロールで削除の権限を落とす
2. ゴミ箱プラグインを使う
3. View customizeプラグインで非表示化する
4. 削除させないためのプラグイン
10/34

Page: 12

1. ロールで削除の権限を落とす
11/34

Page: 13

2. ゴミ箱プラグインを使う
アジャイルウェアさんのゴミ箱プラグイン
https://github.com/agileware-jp/redmine_issue_trash
Issueについてのみ扱う.
削除せずにゴミ箱に入ったように見える.
Issueのbefore_destroyで削除しようとするIssueのコピーを別テーブル
に保持する.
復活できる!
12/34

Page: 14

2. ゴミ箱プラグインを使う
https://www.slideshare.net/agileware_jp/lychee-
redminelychee より引用
13/34

Page: 15

3. View customizeプラグインで非
表示化する
onozatyさんのView customizeプラグイン
https://github.com/onozaty/redmine-view-customize
ファーエンドテクノロジーさんの「 View customize プラグイ
ンによる Redmine カスタマイズ集」の「システム管理者権限
ユーザーでログインした際にチケット削除ボタンを非表示にす
る」が良さそう.
14/34

Page: 16

3. View customizeプラグイン
https://github.com/farend/redmine-view-customize-
examples/blob/
3e7c90f744771d797bbcfb7485682f99be81076e/
customizes/27afbc24/customize.mdより引用
15/34

Page: 17

4. 削除させ
ないための
プラグイン

Page: 18

今日の
ために

Page: 19

作ってき
ました

Page: 20

全米が
泣いた
(嘘)

Page: 21

そのプラグ
インの名
は…

Page: 22

そのプラグインの名は…
Redmine
21/34

Page: 23

そのプラグインの名は…
Redmine
22/34

Page: 24

邦題

Page: 25

絶対削除さ
せないマン

Page: 26

デモ

Page: 27

Redmine The NeverDeleting
Story a.k.a. 絶対削除させないマン
削除させない
プロジェクト
ユーザー
Issue
システム管理者であろうとも
26/34

Page: 28

絶対削除させないマン
一時的に削除を許す優しい一面もある
27/34

Page: 29

本気モード 絶対削除させないマン
環境変数 RTNDS_FULL_POWER=1 を設定する.
↓
destroyメソッドやdeleteメソッドなど,
削除に関連するメソッドを undef_method
Rakeタスクやrails consoleによる実行でも削除させない
28/34

Page: 30

今後

Page: 31

絶対削除させないマン今後 (1)
急いで作ったので… :>
ごく直近について
README.md ちゃんと書こう
i18n
日本語メッセージ
英語メッセージ
自動試験& CI
管理画面も削除リンク非表示
30/34

Page: 32

絶対削除させないマン今後 (2)
さらに後ほど
Rubyが目指している型宣言を書かずに
型の恩恵を享受する未来
Redmineプラグインでも活用できないだろうか.
パイロットアプリケーションとして利用
既存のメソッド置換え
モデルがある
コントローラとビューがある
31/34

Page: 33

まとめ
削除操作
しない: 「ロック」「アーカイブ」「却下」でいいんです
させない: 4つの方法
ロールで削除の権限を落とす
ゴミ箱プラグインを使う
View customizeプラグインで非表示化する
絶対削除させないマン
ゆるさない: ...
32/34

Page: 34

まとめ
削除操作
しない: 「ロック」「アーカイブ」「却下」でいいんです
させない: 4つの方法
ロールで削除の権限を落とす
ゴミ箱プラグインを使う
View customizeプラグインで非表示化する
絶対削除させないマン
ゆるさない: 権限と絶対削除させないマンが403にします
33/34

Page: 35

ご静聴ありがとうございました
Redmine
a.k.a. 絶対削除させないマン プラグイン
https://github.com/nishidayuya/
redmine_the_never_deleting_story
Starはこちら↑
Powered by Rabbit 3.0.3
34/34

Other slides