rabbit-slide-nishidayuya-do_not_delete 1.2023.07.07.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rabbit +2 -0
- data/README.md +25 -0
- data/Rakefile +17 -0
- data/config.yaml +26 -0
- data/delete_issue_permission.png +0 -0
- data/delete_project_permission.png +0 -0
- data/demo.md +65 -0
- data/do_not_delete.md +235 -0
- data/hide_delete_link_by_view_customize.png +0 -0
- data/logo_with_falcon.png +0 -0
- data/logo_with_qrcode.svg +801 -0
- data/pdf/do_not_delete-do_not_delete.pdf +0 -0
- data/qrcode_rtnds_repository_uri.png +0 -0
- data/redmine_issue_trash.png +0 -0
- data/temporary_allowed.png +0 -0
- data/the_never_deleting_story_logo.svg +1434 -0
- metadata +76 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1ecc78ec8a7cbe003518b4ad334993ceed6483f40f5dff63f56c749757c026b3
|
4
|
+
data.tar.gz: 234251ca5ab7b7429504c74b9c5bed5a54946d563c67a222c6369ecbad3cffcb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4f912842eeb6f6e7ec3c399f64db96c1235b40e6605fcc028e99dc645f9870c1f6572f31da963e5139ea6425565b0906901333f7a140edcfcdc31091eefa3837
|
7
|
+
data.tar.gz: '08ef8218ce14e130e804da284cf48644a84f637826f0ddf0e69e7463cef3879c1c7679c9255daad29854471fca8204a5c75b4fa0fad0994cf191a8084c2b0a97'
|
data/.rabbit
ADDED
data/README.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# 削除操作 しない・させない・ゆるさない
|
2
|
+
|
3
|
+
[Redmine Japan Vol.3](https://redmine-japan.org/timetable/#b07-1) の発表資料
|
4
|
+
|
5
|
+
2023-07-07に開催された.
|
6
|
+
|
7
|
+
## 作者向け
|
8
|
+
|
9
|
+
### 表示
|
10
|
+
|
11
|
+
rake
|
12
|
+
|
13
|
+
### 公開
|
14
|
+
|
15
|
+
rake publish
|
16
|
+
|
17
|
+
## 閲覧者向け
|
18
|
+
|
19
|
+
### インストール
|
20
|
+
|
21
|
+
gem install rabbit-slide-nishidayuya-do_not_delete
|
22
|
+
|
23
|
+
### 表示
|
24
|
+
|
25
|
+
rabbit rabbit-slide-nishidayuya-do_not_delete.gem
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require "rabbit/task/slide"
|
2
|
+
|
3
|
+
# Edit ./config.yaml to customize meta data
|
4
|
+
|
5
|
+
spec = nil
|
6
|
+
Rabbit::Task::Slide.new do |task|
|
7
|
+
spec = task.spec
|
8
|
+
# spec.files += Dir.glob("doc/**/*.*")
|
9
|
+
# spec.files -= Dir.glob("private/**/*.*")
|
10
|
+
# spec.add_runtime_dependency("rabbit-theme-YOUR-THEME")
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Tag #{spec.version}"
|
14
|
+
task :tag do
|
15
|
+
sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
|
16
|
+
sh("git", "push", "--tags")
|
17
|
+
end
|
data/config.yaml
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
---
|
2
|
+
id: do_not_delete
|
3
|
+
base_name: do_not_delete
|
4
|
+
tags:
|
5
|
+
- Redmine
|
6
|
+
- RedminePlugin
|
7
|
+
presentation_date: "2023-07-07"
|
8
|
+
presentation_start_time:
|
9
|
+
presentation_end_time:
|
10
|
+
version: 1.2023.07.07.0
|
11
|
+
licenses:
|
12
|
+
- X11 License
|
13
|
+
slideshare_id:
|
14
|
+
speaker_deck_id:
|
15
|
+
vimeo_id:
|
16
|
+
youtube_id:
|
17
|
+
width: 1368
|
18
|
+
height: 768
|
19
|
+
source_code_uri:
|
20
|
+
author:
|
21
|
+
markup_language: :markdown
|
22
|
+
name: Yuya.Nishida.
|
23
|
+
email: yuyaAT@ATj96DOT.DOTorg
|
24
|
+
rubygems_user: nishidayuya
|
25
|
+
slideshare_user: nishidayuya
|
26
|
+
speaker_deck_user: nishidayuya
|
Binary file
|
Binary file
|
data/demo.md
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
# デモ内容
|
2
|
+
|
3
|
+
## 準備
|
4
|
+
|
5
|
+
http://localhost:3000/ を開く
|
6
|
+
|
7
|
+
## プロジェクト削除
|
8
|
+
|
9
|
+
「管理」クリック
|
10
|
+
|
11
|
+
「プロジェクト」クリック
|
12
|
+
|
13
|
+
削除クリック
|
14
|
+
|
15
|
+
→403になる.
|
16
|
+
|
17
|
+
## ユーザーを削除
|
18
|
+
|
19
|
+
「管理」クリック
|
20
|
+
|
21
|
+
「ユーザー」クリック
|
22
|
+
|
23
|
+
削除クリック
|
24
|
+
|
25
|
+
→403になる.
|
26
|
+
|
27
|
+
## Issue削除
|
28
|
+
|
29
|
+
「プロジェクト」クリック
|
30
|
+
|
31
|
+
「rtnds-2023-07-03-1」クリック
|
32
|
+
|
33
|
+
「チケット」クリック
|
34
|
+
|
35
|
+
Issueの行で右クリック
|
36
|
+
|
37
|
+
→「チケットを削除」が非活性化されている.
|
38
|
+
|
39
|
+
## Issue削除をAPIで
|
40
|
+
|
41
|
+
```console
|
42
|
+
curl --silent \
|
43
|
+
--dump-header - \
|
44
|
+
--header 'Content-Type: application/json' \
|
45
|
+
--header 'X-Redmine-API-Key: f1dcd7245a6bb18d36df3a1d2bebde9f1fc99280 \
|
46
|
+
--request DELETE \
|
47
|
+
http://localhost:3000/issues/2.json'
|
48
|
+
```
|
49
|
+
|
50
|
+
## 一時的な削除有効化
|
51
|
+
|
52
|
+
「管理」クリック
|
53
|
+
|
54
|
+
「一時的な削除有効化」クリック
|
55
|
+
|
56
|
+
「ユーザー」と「Expire after」
|
57
|
+
|
58
|
+
「作成」クリック
|
59
|
+
|
60
|
+
## rails console
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
issue = Issue.first!
|
64
|
+
issue.destroy!
|
65
|
+
```
|
data/do_not_delete.md
ADDED
@@ -0,0 +1,235 @@
|
|
1
|
+
# 削除操作 しない させない ゆるさない
|
2
|
+
|
3
|
+
author
|
4
|
+
: 西田雄也
|
5
|
+
ネットワーク応用通信研究所
|
6
|
+
2023-07-07
|
7
|
+
|
8
|
+
allotted-time
|
9
|
+
: 10m
|
10
|
+
|
11
|
+
theme
|
12
|
+
: lightning-simple
|
13
|
+
|
14
|
+
# 自己 紹介
|
15
|
+
|
16
|
+
# 自己紹介
|
17
|
+
|
18
|
+
- 西田雄也 ネットワーク応用通信研究所
|
19
|
+
- Ruby City MATSUE(島根県)から参りました!
|
20
|
+
- GitHub: [https://github.com/nishidayuya](https://github.com/nishidayuya)
|
21
|
+
- Twitter: [https://twitter.com/nishidayuya](https://twitter.com/nishidayuya)
|
22
|
+
- 趣味ではなにかツールを作っています.
|
23
|
+
- dpu: Git作業ディレクトリ上のパスを指定するとタグあるいはコミットIDを用いたGitHub.com上で参照可能なURIを生成する.
|
24
|
+
- 2023-09-16の松江Ruby会議10でしゃべります.
|
25
|
+
|
26
|
+
# 削除操作のお話
|
27
|
+
|
28
|
+
# 削除操作のお話
|
29
|
+
|
30
|
+
- Redmineでの各種削除操作
|
31
|
+
- ユーザーの削除
|
32
|
+
- プロジェクトの削除
|
33
|
+
- Issueの削除
|
34
|
+
- Issueのコメントの削除
|
35
|
+
- Issueのウォッチャーの削除
|
36
|
+
- Wikiページの削除
|
37
|
+
- フォーラムの削除
|
38
|
+
- フォーラムのメッセージの削除
|
39
|
+
- ...
|
40
|
+
|
41
|
+
# 削除すると
|
42
|
+
|
43
|
+
- (あたりまえですが)削除したものは残らない
|
44
|
+
- 履歴にも残さない
|
45
|
+
- Redmine標準では復活させる機能はない
|
46
|
+
|
47
|
+
↓
|
48
|
+
|
49
|
+
削除前に警告される.
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
しかしながら,気がつくのは大抵削除した後...
|
54
|
+
|
55
|
+
↓
|
56
|
+
|
57
|
+
ではどうするか?
|
58
|
+
|
59
|
+
# 削除操作 しない!
|
60
|
+
|
61
|
+
# 削除操作 しない!
|
62
|
+
|
63
|
+
いくつかは代わりの手段がある.
|
64
|
+
|
65
|
+
- ユーザー: 「ロック」すればいい.ログインできなくなる.
|
66
|
+
- プロジェクト: 「アーカイブ」すればいい.
|
67
|
+
プロジェクト一覧やプロジェクト選択肢にあらわれなくなる.
|
68
|
+
- Issue: ステータスを「却下」のような
|
69
|
+
「終了したチケット」フラグがオンのものにすればいい.
|
70
|
+
|
71
|
+
これらの手段なら画面上から簡単に復活できる.
|
72
|
+
|
73
|
+
# 削除はしなくていいけれど
|
74
|
+
|
75
|
+
- 「チケットを削除」見えると使いたくなってしまう.
|
76
|
+
- 疲れているときとか忘れて削除しちゃうかもしれない.
|
77
|
+
- 削除しなくていいことを共有してなかったメンバーは?
|
78
|
+
|
79
|
+
↓
|
80
|
+
|
81
|
+
ではどうするか?
|
82
|
+
|
83
|
+
# 削除操作 させない!
|
84
|
+
|
85
|
+
# 削除操作 させない!
|
86
|
+
|
87
|
+
4つの方法
|
88
|
+
|
89
|
+
1. ロールで削除の権限を落とす
|
90
|
+
2. ゴミ箱プラグインを使う
|
91
|
+
3. View customizeプラグインで非表示化する
|
92
|
+
4. 削除させないためのプラグイン
|
93
|
+
|
94
|
+
# 1. ロールで削除の権限を落とす
|
95
|
+
|
96
|
+
![](delete_project_permission.png){:relative_height='50'}
|
97
|
+
|
98
|
+
![](delete_issue_permission.png){:relative_height='110'}
|
99
|
+
|
100
|
+
# 2. ゴミ箱プラグインを使う
|
101
|
+
|
102
|
+
- アジャイルウェアさんのゴミ箱プラグイン
|
103
|
+
- [https://github.com/agileware-jp/redmine_issue_trash](https://github.com/agileware-jp/redmine_issue_trash)
|
104
|
+
- Issueについてのみ扱う.
|
105
|
+
- 削除せずにゴミ箱に入ったように見える.
|
106
|
+
- Issueのbefore_destroyで削除しようとするIssueのコピーを別テーブルに保持する.
|
107
|
+
- 復活できる!
|
108
|
+
|
109
|
+
# 2. ゴミ箱プラグインを使う
|
110
|
+
|
111
|
+
![](redmine_issue_trash.png){:relative_height='80'}
|
112
|
+
|
113
|
+
- [https://www.slideshare.net/agileware_jp/lychee-redminelychee](https://www.slideshare.net/agileware_jp/lychee-redminelychee) より引用
|
114
|
+
|
115
|
+
# 3. View customizeプラグインで非表示化する
|
116
|
+
|
117
|
+
- onozatyさんのView customizeプラグイン
|
118
|
+
- [https://github.com/onozaty/redmine-view-customize](https://github.com/onozaty/redmine-view-customize)
|
119
|
+
- ファーエンドテクノロジーさんの「View customizeプラグインによるRedmineカスタマイズ集」の「システム管理者権限ユーザーでログインした際にチケット削除ボタンを非表示にする」が良さそう.
|
120
|
+
|
121
|
+
# 3. View customizeプラグイン
|
122
|
+
|
123
|
+
![](hide_delete_link_by_view_customize.png){:relative_height='65'}
|
124
|
+
|
125
|
+
- [https://github.com/farend/redmine-view-customize-examples/blob/3e7c90f744771d797bbcfb7485682f99be81076e/customizes/27afbc24/customize.md](https://github.com/farend/redmine-view-customize-examples/blob/3e7c90f744771d797bbcfb7485682f99be81076e/customizes/27afbc24/customize.md)より引用
|
126
|
+
|
127
|
+
# 4. 削除させないためのプラグイン
|
128
|
+
|
129
|
+
# 今日のために
|
130
|
+
|
131
|
+
# 作ってきました
|
132
|
+
|
133
|
+
# 全米が 泣いた(嘘)
|
134
|
+
|
135
|
+
# そのプラグインの名は...
|
136
|
+
|
137
|
+
# そのプラグインの名は...
|
138
|
+
|
139
|
+
Redmine
|
140
|
+
|
141
|
+
![](the_never_deleting_story_logo.svg){:relative_height='90'}
|
142
|
+
|
143
|
+
# そのプラグインの名は...
|
144
|
+
|
145
|
+
Redmine
|
146
|
+
|
147
|
+
![](logo_with_falcon.png)
|
148
|
+
|
149
|
+
# 邦題
|
150
|
+
|
151
|
+
# 絶対削除させないマン
|
152
|
+
|
153
|
+
# デモ
|
154
|
+
|
155
|
+
# Redmine The NeverDeleting Story a.k.a. 絶対削除させないマン
|
156
|
+
|
157
|
+
- 削除させない
|
158
|
+
- プロジェクト
|
159
|
+
- ユーザー
|
160
|
+
- Issue
|
161
|
+
- システム管理者であろうとも
|
162
|
+
|
163
|
+
# 絶対削除させないマン
|
164
|
+
|
165
|
+
- 一時的に削除を許す優しい一面もある
|
166
|
+
|
167
|
+
![](temporary_allowed.png){:relative_height='90'}
|
168
|
+
|
169
|
+
# 本気モード 絶対削除させないマン
|
170
|
+
|
171
|
+
- 環境変数 `RTNDS_FULL_POWER=1` を設定する.
|
172
|
+
|
173
|
+
↓
|
174
|
+
|
175
|
+
- destroyメソッドやdeleteメソッドなど,
|
176
|
+
削除に関連するメソッドをundef_method
|
177
|
+
- Rakeタスクやrails consoleによる実行でも削除させない
|
178
|
+
|
179
|
+
# 今後
|
180
|
+
|
181
|
+
# 絶対削除させないマン今後 (1)
|
182
|
+
|
183
|
+
- 急いで作ったので... :>
|
184
|
+
- ごく直近について
|
185
|
+
- README.md ちゃんと書こう
|
186
|
+
- i18n
|
187
|
+
- 日本語メッセージ
|
188
|
+
- 英語メッセージ
|
189
|
+
- 自動試験&CI
|
190
|
+
- 管理画面も削除リンク非表示
|
191
|
+
|
192
|
+
# 絶対削除させないマン今後 (2)
|
193
|
+
|
194
|
+
- さらに後ほど
|
195
|
+
- Rubyが目指している型宣言を書かずに
|
196
|
+
型の恩恵を享受する未来
|
197
|
+
- Redmineプラグインでも活用できないだろうか.
|
198
|
+
- パイロットアプリケーションとして利用
|
199
|
+
- 既存のメソッド置換え
|
200
|
+
- モデルがある
|
201
|
+
- コントローラとビューがある
|
202
|
+
|
203
|
+
# まとめ
|
204
|
+
|
205
|
+
- 削除操作
|
206
|
+
- しない: 「ロック」「アーカイブ」「却下」でいいんです
|
207
|
+
- させない: 4つの方法
|
208
|
+
- ロールで削除の権限を落とす
|
209
|
+
- ゴミ箱プラグインを使う
|
210
|
+
- View customizeプラグインで非表示化する
|
211
|
+
- 絶対削除させないマン
|
212
|
+
- ゆるさない: ...
|
213
|
+
|
214
|
+
# まとめ
|
215
|
+
|
216
|
+
- 削除操作
|
217
|
+
- しない: 「ロック」「アーカイブ」「却下」でいいんです
|
218
|
+
- させない: 4つの方法
|
219
|
+
- ロールで削除の権限を落とす
|
220
|
+
- ゴミ箱プラグインを使う
|
221
|
+
- View customizeプラグインで非表示化する
|
222
|
+
- 絶対削除させないマン
|
223
|
+
- ゆるさない: 権限と絶対削除させないマンが403にします
|
224
|
+
|
225
|
+
# ご静聴ありがとうございました
|
226
|
+
|
227
|
+
Redmine
|
228
|
+
|
229
|
+
![](logo_with_qrcode.svg){:relative_height="47" :align="right" :relative_margin_right="-5"}
|
230
|
+
|
231
|
+
a.k.a. 絶対削除させないマン プラグイン
|
232
|
+
|
233
|
+
[https://github.com/nishidayuya/redmine_the_never_deleting_story](https://github.com/nishidayuya/redmine_the_never_deleting_story)
|
234
|
+
|
235
|
+
Starはこちら↑
|
Binary file
|
Binary file
|