QA #688
奈良 裕記 さんがほぼ7年前に更新
h3. ■現象/要望
プラグイン追加時、各PJ単位に有効化(モジュール設定)操作が必要だが、一括して有効化したい。
理由
・単純作業だが、対象PJ数が多いと面倒で間違い易い。
・動作検証等で繰り返し実行が必要な場合がある。(大規模環境の更新時など)
・各PJ側担当者の判断に任せると、知らなくて使われない場合がある。
h3. ■解決策
h4. SQLで実行する
PJのModule登録は、enabled_modulesテーブルに、project_idとnameを並べて追加するだけ。
一括設定の場合は、下記の様にSQL実行すればよい
現在進行中のプロジェクト全部に、'unofficial_cooking'のプラグインを有効化する。
(status=1 -> 進行中プロジェクト)
<pre><code class="sql">
insert into enabled_modules(project_id,name)
select id,'unofficial_cooking' as module_name
from projects where status=1;
</code></pre>
PJの識別子が redmine_tokyo_ で始まるPJの場合に追加
<pre><code class="sql">
insert into enabled_modules(project_id,name)
select id,'unofficial_cooking' as module_name
from projects where status=1 and identifier like 'redmine_tokyo_%';
</code></pre>
h4. Rails Consoleで実行する
上の方法は単純なDBのデータ改竄ですが、下記は本来のRedmine内と同様の処理を実行できます。 上の方法は単純にDBのデータ改竄ですが、下記は本来のRedmine内と同様の処理を実行できます。
起動
bundle exec rails console production
下記実行後は exit で終了
<pre><code class="ruby">
Project.all.active.each do |project|
project.enable_module!('unofficial_cooking')
end
</code></pre>
<pre><code class="ruby">
Project.where('identifier like ?', "redmine_tokyo%").each do |project|
project.enable_module!('unofficial_cooking')
end
</code></pre>
h3. ■対応状況
SQL実行、またはRails Console上操作により対応可能 SQL実行で対応可能
h3. ■補足
上記PJ設定だけでなく、各Roleへの権限設定も必要な場合が多い。
こちらはrolesのpermissions(text)にyamlでべた書きなので、
上記の様に単純なSQL処理では難しそう。
(単純に1行appendするだけでは無い様子)
Roleはシステムレベルの権限設計なので、内容判断して設定すべきものと考えられる。
戻る