プロジェクト

全般

プロフィール

機能 #83

完了

Redmine Glossaryプラグインをリファクタリングする

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

ステータス:
却下
優先度:
通常
担当者:
カテゴリ:
Redmine
対象バージョン:
-
開始日:
2018/07/16
期日:
進捗率:

100%

予定工数:
(合計: 0.00時間)

説明

Redminge GlossaryプラグインのRedmine 4.0(Rails 5.2)対応作業を通じて、今後のメインテナンスを良好にするにはリファクタリングが必要と強く感じた。

  • Railsのリソース指向な構造に合わせる
    • コントローラーのアクションがルーティングでresources/resourceを使うのに馴染まない
    • newやeditのアクションの遷移が独特(new→create、edit→updateとなっていない)
  • 命名を一貫させる
    • glossaryとterm
    • styleは表示設定に適する命名かどうか
  • 役割分担が局所化されていない
    • glossary_controllerが肥大化、term_categoryまで面倒みている

そこで、Redmine 4.0(Rails 5.2)対応を一応終えたバージョンをブランチ開始としてリファクタリングを実施する。
リファクタリングは多岐にわたるので、本チケットの子チケットに個別リファクタリングを設けることでタスク管理する。

リファクタリング作業のブランチは次とする。
refactoring/83


子チケット 5 (0件未完了5件完了)

機能 #84: 不要ファイルの削除却下高橋 徹2018/07/16

操作
機能 #85: コントローラーのbefore_actionでプロジェクトを取得する際はRedmineのAPIを呼ぶ却下2018/07/22

操作
機能 #86: テーブル名(モデル名)の衝突可能性低減却下高橋 徹2018/07/23

操作
機能 #87: リソースルーティングの導入却下2018/07/23

操作
機能 #88: acts_as_listをacts_as_positionedで置き換え却下2018/07/29

操作

関連するチケット 3 (2件未完了1件完了)

関連している 機能 #81: Redmine 4.0でglossary pluginを動くようにする進行中2018/04/22

操作
関連している 機能 #75: Redmine Glossary プラグインを一から作成する進行中高橋 徹2019/10/19

操作
関連している 機能 #95: Redmine 4.xに対応するRedmine Glossaryプラグインを、旧バージョンのデータベースを引き継ぎ、且つコードをきれいに再構築する却下高橋 徹2019/10/19

操作

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

  • 関連している 機能 #81: Redmine 4.0でglossary pluginを動くようにする を追加

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

  • 関連している 機能 #75: Redmine Glossary プラグインを一から作成する を追加

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

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

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

リファクタリング作業の主幹となるブランチを作成した。

redmine_glossary (support-redmine4=)$ git checkout -b refactoring/83

個別のリファクタリングは、この主幹となるブランチ(refactoring/83)からブランチする。

redmine_glossary (refactoring/83)$ git checkout -b refactoring/86

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

リファクタリングの試み(第1回)

結果:破綻
作業経緯:

まず、[#86]から着手することとし、モデルクラスのクラス名およびファイル名の変更、次にユニットテストを通すことを目標に修正を実施した。
データベースのテーブル名を変更するマイグレーションスクリプトを作成し、モデル内、ユニットテスト内、fixtureのクラス名を修正。
コントローラーの修正に入るところで、ルーティング設定、アクションの定義、などなどで修正範囲が拡大し破綻。

  • リンクでは、コントローラー名を埋め込んでいるものが大半のため、コントローラー、ヘルパー、ビューの随所で文字列を変更しまくる必要あり。例をいくつか示す。
    {:controller => 'glossary', :action => 'add_term_category', :project_id => @project.id }
  • 部分ビューではパスを多用しているものが多いので、それらを変更しまくる必要あり。例をいくつか示す。
    <%= render :partial => 'glossary/form', :locals => {:f => f} %>

アプローチを見直す必要がありそう。

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

  • ステータス進行中 から フィードバック に変更

リファクタリング困難につき、本タスクは中止としました。
子チケットを終了させるため、いったんフィードバックにします。

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

  • ステータスフィードバック から 却下 に変更
  • 進捗率50 から 100 に変更

本タスクは中止

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

  • 関連している 機能 #95: Redmine 4.xに対応するRedmine Glossaryプラグインを、旧バージョンのデータベースを引き継ぎ、且つコードをきれいに再構築する を追加

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