Text
Page: 1
削除操作 しない させない ゆるさない
西田雄也
ネットワーク応用通信研究所
2023-07-07
Powered by Rabbit 3.0.3
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: 5
削除操作のお話
Redmineでの各種削除操作
ユーザーの削除
プロジェクトの削除
Issueの削除
Issueのコメントの削除
Issueのウォッチャーの削除
Wikiページの削除
フォーラムの削除
フォーラムのメッセージの削除
…
4/34
Page: 6
削除すると
(あたりまえですが)削除したものは残らない
履歴にも残さない
Redmine標準では復活させる機能はない
↓
削除前に警告される.
しかしながら,気がつくのは大抵削除した後…
↓
ではどうするか?
5/34
Page: 8
削除操作 しない!
いくつかは代わりの手段がある.
ユーザー: 「ロック」すればいい.ログインできなくなる.
プロジェクト: 「アーカイブ」すればいい.
プロジェクト一覧やプロジェクト選択肢にあらわれなくなる.
Issue: ステータスを「却下」のような
「終了したチケット」フラグがオンのものにすればいい.
これらの手段なら画面上から簡単に復活できる.
7/34
Page: 9
削除はしなくていいけれど
「チケットを削除」見えると使いたくなってしまう.
疲れているときとか忘れて削除しちゃうかもしれない.
削除しなくていいことを共有してなかったメンバーは?
↓
ではどうするか?
8/34
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: 22
そのプラグインの名は…
Redmine
21/34
Page: 23
そのプラグインの名は…
Redmine
22/34
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: 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