プロジェクト

全般

プロフィール

機能 #96

完了

機能 #75: Redmine Glossary プラグインを一から作成する

Redmine Glossary プラグインのスキーマの変更

高橋 徹 さんが4年以上前に追加. 4年以上前に更新.

ステータス:
終了
優先度:
通常
担当者:
カテゴリ:
Redmine
対象バージョン:
-
開始日:
2019/10/19
期日:
進捗率:

100%

予定工数:

説明

Redmine Glossaryの旧テーブルから新テーブルへのマイグレーションを作成する。

  • terms -> glossary_terms
    必須
  • term_categories -> glossary_categories
    必須
  • glossary_style
    マイグレーション要否決定
    ユーザー毎の表示カスタマイズ設定は過去から引き継ぎしなくても致命的ではないので、マイグレーションをせずdropしてもよいかも。
旧テーブルterms 新テーブルglossary_terms
カラム名 カラム型 カラム名 カラム型 備考
id int(11) auto_increment 同左
project_id int(11) 同左
category_id int(11) 同左
author_id int(11) 同左 要作成
updater_id int(11) 同左 要作成
name varchar(255) 同左
name_en varchar(255) 同左
datatype varchar(255) 同左
codename varchar(255) 同左
description text 同左
created_on datetime created_at datetime
updated_on datetime updated_at datetime
rubi varchar(255) 同左
abbr_whole varchar(255) 同左
tech_en varchar(255) 削除(未使用)
name_cn varchar(255) 削除(未使用)
name_fr varchar(255) 削除(未使用)
旧テーブル term_categories 新テーブルglossary_categories
カラム名 カラム型 カラム名 カラム型
id int(11) auto_increment 同左
project_id int(11) 同左
name varchar(255) 同左
position int(11) 同左
旧テーブル glossary_style 新テーブル glossary_view_settings
カラム名 カラム型 カラム名 カラム型 備考
id int(11) auto_increment 同左
show_desc tinyint(1)
groupby int(11)
project_scope int(11)
sort_item_0 varchar(255)
sort_item_1 varchar(255)
sort_item_2 varchar(255)
user_id int(11)

高橋 徹 さんが4年以上前に更新

  • カテゴリRedmine にセット
  • 担当者高橋 徹 にセット

高橋 徹 さんが4年以上前に更新

  • ステータス新規 から 進行中 に変更
  • 進捗率0 から 50 に変更

マイグレーション(スキーマ変更)スクリプトを生成するRailsのスクリプト generate migrationを実行します。

まず、テーブル名termsをglossary_termsに変更するマイグレーションを作成します。Redmine専用スクリプトは用意されていないので、Redmine基点ディレクトリでRails汎用スクリプトで雛形を生成し、プラグインディレクトリへ移動・ファイル名変更します。

D:\work\redmine> 
bundle exec rails generate migration rename_glossary_terms_from_terms
      invoke  active_record
      create    db/migrate/20191019234944_rename_glossary_terms_from_terms.rb

D:\work\redmine> move db\migrate\20191019234944_rename_glossary_terms_from_terms.rb plugins\redmine_glossary\db\migrate\004_rename_glossary_terms_from_terms.rb

プラグインのdb\migrateディレクトリに、ファイル名先頭を日時から連番となるよう変更して移動します。
生成されたマイグレーションファイルの雛形は次です。

class RenameGlossaryTermsFromTerms < ActiveRecord::Migration[5.2]
  def change
  end
end

def changeの中に、マイグレーションメソッド(今回はrename_table)を実行するコードを記述します。

   def change
+    rename_table :terms, :glossary_terms
   end

changeメソッドで定義した変更はロールバックに対応することができます。

ついでに、カラムtech_en, name_cn, name_frを削除するマイグレーションを追記します。

   def change
+    remove_column :terms, :tech_en, :string
+    remove_column :terms, :name_cn, :string
+    remove_column :terms, :name_fr, :string
     rename_table :terms, :glossary_terms
   end

テーブル名変更とカラム削除とでマイグレーションファイルを分けるかどうか悩みましたが、あまり多数のマイグレーションファイルがあるのも煩雑なので、ここでは1つのマイグレーションファイルにまとめています。

マイグレーションの実行は次です。

D:\work\redmine> bundle exec rails redmine:plugins:migrate
== 4 RenameGlossaryTermsFromTerms: migrating ==================================
-- remove_column(:terms, :tech_en, :string)
   -> 0.0218s
-- remove_column(:terms, :name_cn, :string)
   -> 0.0116s
-- remove_column(:terms, :name_fr, :string)
   -> 0.0103s
-- rename_table(:terms, :glossary_terms)
   -> 0.0140s
== 4 RenameGlossaryTermsFromTerms: migrated (0.0606s) =========================

D:\work\redmine> 

マイグレーションの変更を戻す(ロールバック)確認をします。

D:\work\redmine> bundle exec rails redmine:plugins:migrate NAME=redmine_glossary VERSION=3
== 4 RenameGlossaryTermsFromTerms: reverting ==================================
-- rename_table(:glossary_terms, :terms)
   -> 0.0157s
-- add_column(:terms, :name_fr, :string)
   -> 0.0037s
-- add_column(:terms, :name_cn, :string)
   -> 0.0039s
-- add_column(:terms, :tech_en, :string)
   -> 0.0035s
== 4 RenameGlossaryTermsFromTerms: reverted (0.0488s) =========================
D:\work\redmine> 

マイグレーションファイル004の変更を戻す、すなわちマイグレーションファイル003までを適用したスキーマに戻すので、VERSION=3を指定します。

高橋 徹 さんが4年以上前に更新

  • 親チケット#95 から #75 に変更

スキーマ変更は既存の再構築プロジェクト(#75)でも実現できる見込みがあるので、そちらで実施する。
そこで親チケットを変更した。

高橋 徹 さんが4年以上前に更新

高橋 徹 さんが4年以上前に更新

  • ステータス進行中 から 終了 に変更
  • 進捗率50 から 100 に変更

Redmine Glossaryプラグイン再構築 フェーズ21で本作業を実施した。
よって、本チケットはクローズする。

他の形式にエクスポート: Atom PDF