プロジェクト

全般

プロフィール

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内と同様の処理を実行できます。 

 起動 
 bundle exec rails console production 
 下記実行後は  exit で終了 

 <pre><code class="ruby"> 
 Project.all.active.each do |project| 
  project.enable_module!('unofficial_cooking') 
 end 
 </code></pre> 




 h3. ■対応状況 

 SQL実行で対応可能 

 h3. ■補足 

 上記PJ設定だけでなく、各Roleへの権限設定も必要な場合が多い。 
 こちらはrolesのpermissions(text)にyamlでべた書きなので、 
 上記の様に単純なSQL処理では難しそう。 
 (単純に1行appendするだけでは無い様子) 

 Roleはシステムレベルの権限設計なので、内容判断して設定すべきものと考えられる。 

戻る