プロジェクト

全般

プロフィール

活動

2018/06/30から2018/07/29まで

2018/07/29

高徹 19:21 機能 #83: Redmine Glossaryプラグインをリファクタリングする
h4. リファクタリングの試み(第1回)
結果:破綻
作業経緯:
まず、[#86]から着手することとし、モデルクラスのクラス名およびファイル名の変更、次にユニットテストを通すことを目標に修正を実施した。
データベースのテーブル名を変更するマイグレーションスクリプトを作成し、モデル内、ユニットテスト内、fixtureのクラス名を修正。
コントローラーの修正に入るところで、ルーティング設定、アクションの定義、などなどで修正範囲が拡大し破綻。
* リン...
高橋 徹
高徹 14:37 機能 #83: Redmine Glossaryプラグインをリファクタリングする
リファクタリング作業の主幹となるブランチを作成した。 高橋 徹
高徹 14:26 機能 #83 (進行中): Redmine Glossaryプラグインをリファクタリングする
高橋 徹
高徹 01:39 機能 #88 (却下): acts_as_listをacts_as_positionedで置き換え
acts_as_listはRedmine 4.0で除外されたので、Redmine 4.0対応[#81]では外部gemとしてacts_as_listを追加指定した。
Redmine 4.0本体には、lib/redmine/acts/positioned.rb ファイルでacts_as_positionedが提供される(?)ので、これを利用するように変更する。
Redmine本体のモデルクラスでもいくつかでacts_as_positionedを使用している。
@B...
高橋 徹

2018/07/26

高徹 07:53 リビジョン e197beb3 (redmine_glossary): Fix unit test assertion due to fixture changed for functional test
高橋 徹

2018/07/23

高徹 22:40 機能 #87 (却下): リソースルーティングの導入
Railsで推奨されるルーティング設定はRESTfulなresources、resourceの設定で、それぞれデフォルトで生成されるアクションとHTTPメソッドの組み合わせが決まっている。
現行のGlossaryプラグインは、RESTfulなresources、resourceの設定とは異なるアクションとHTTPメソッドの組み合わせを使っているので、理解が難しくなっている面がある。
例えば、リソース(モデル)を生成するときは、resourcesで定義した場合、
...
高橋 徹
高徹 21:58 機能 #86 (却下): テーブル名(モデル名)の衝突可能性低減
Redmineのデータベースは本体・プラグインを含めフラットなため、名前の付け方に注意をしないとRedmine本体のバージョンアップや別なプラグインの導入でデータベースのテーブル名が衝突することがあります。
そこで、プラグインにちなむテーブルには接頭辞glossaryを付けることとします。
|_. No. |_. 現行のテーブル名|_. リファクタリング後のテーブル名|
|=. 1 |terms |glossary_terms...
高橋 徹
高徹 06:56 機能 #81: Redmine 4.0でglossary pluginを動くようにする
glossary_controller のテストで nilに対するempty?呼び出しで例外発生
* fixtures/terms.yml
高橋 徹
高徹 06:51 リビジョン fa764aa1 (redmine_glossary): Make minimal functional test for glossary_controller
高橋 徹

2018/07/22

高徹 22:48 リビジョン f9738d96 (redmine_glossary): Make glossary_styles controller test
高橋 徹
高徹 18:15 機能 #84: 不要ファイルの削除
app/views/glossary_styles/edit.html.erb
これは中身がダミーなので不要ファイルでは?
高橋 徹
高徹 05:15 機能 #84: 不要ファイルの削除
app/helpers/term_categories_helper.rb はモジュールの枠だけ定義されているので不要
高橋 徹
高徹 18:13 機能 #81: Redmine 4.0でglossary pluginを動くようにする
glossary_styles_controller#edit のロジックが複雑な件について
|/2. anonymous |params[:clear]指定あり |session[:glossary_style] = nil |
|params[:clear]指定なし |session[:glossasy_style] = params[:glossary_style] |
glossary_styles_control...
高橋 徹
高徹 08:32 機能 #81: Redmine 4.0でglossary pluginを動くようにする
用意されているテスト・フィクスチャの内容確認
* term_categories.yml
|_. id |_. name|_. project_id|_. position|
| 1 | one | 1 | 1 |
| 2 | two | 1 | 1 |
* terms.yml
|_. id |_. name |_. project_id|_. category_id|
| 1 | term one | 1 | NULL |
| 2 | ...
高橋 徹
高徹 05:09 機能 #81: Redmine 4.0でglossary pluginを動くようにする
コントローラーのテスト(ActiveController::TestCase継承で)
まず、一番単純なモデルであるカテゴリのコントローラーのテストを行う。
indexアクションのテストが実行できるまでの流れをはてな日記に記載。
http://d.hatena.ne.jp/torutk/20180721/p1
高橋 徹
高徹 15:29 機能 #85 (却下): コントローラーのbefore_actionでプロジェクトを取得する際はRedmineのAPIを呼ぶ
コントローラーのbefore_actionでプロジェクトを取得するロジックを、各コントローラーのprivateメソッドに同じコードを記述するのではなく、Redmineで用意するメソッドを呼ぶ。
例)term_categories_controller.rb
高橋 徹
高徹 12:25 リビジョン 1be3f3a2 (redmine_glossary): Add functional test of destroy action for term_categories
高橋 徹
高徹 07:08 リビジョン b25bf663 (redmine_glossary): Make functional test for term_categories with edit and change_order action
高橋 徹

2018/07/21

高徹 22:00 リビジョン 05fddbda (redmine_glossary): Make functional test for term_categories. Remove unuse test file
高橋 徹

2018/07/17

高徹 23:33 機能 #84: 不要ファイルの削除
test/functionals/ にある次の2つのファイル
* glossary_styles_controller_test.rb
* glossray_styles_controller_test.rb
中身はクラス名(ファイル名に基づくため)だけが異なる。後者はスペルミスなので削除すべしと推定。
同ディレクトリにある次のファイル
* term_queries_controller_test.rb
TermQueryというモデルはな...
高橋 徹
高徹 22:43 リビジョン ebcef5ec (redmine_glossary): Make unit test for Term
高橋 徹

2018/07/16

高徹 22:58 機能 #81: Redmine 4.0でglossary pluginを動くようにする
用語のユニットテスト実施メモ
Termのカラムには、created_onとupdated_onがある。
用語を新規作成すると、作成時点での日時が両方のカラムに入る。
用語を編集すると、編集時点の日時がupdated_onに入る。
よって、terms.ymlの有効な定義とするには、created_onとupdated_onの双方に日時の指定要。
高橋 徹
高徹 21:46 機能 #81: Redmine 4.0でglossary pluginを動くようにする
用語のユニットテスト実施メモ
Termクラスではvalidationを次のように指定している。
高橋 徹
高徹 17:12 機能 #81: Redmine 4.0でglossary pluginを動くようにする
ユニットテスト(Model)を実施して問題発見
* app/models/term_category.rb
高橋 徹
高徹 09:24 機能 #81: Redmine 4.0でglossary pluginを動くようにする
テスト実行時に次の警告メッセージが表示されます。 高橋 徹
高徹 21:24 リビジョン 774198de (redmine_glossary): Make unit test for GlossaryStyle
高橋 徹
高徹 17:10 機能 #84 (進行中): 不要ファイルの削除
test/fixtures/にある次の2つのファイル
* glossary_styles.yml
* view_styles.yml
この2つのファイルは中身が同一。テストファイルから参照されているのはglossary_styles.ymlなので、view_styles.ymlは不要ファイルと推定。
高橋 徹
高徹 16:44 機能 #84 (却下): 不要ファイルの削除
不要なファイルがあれば削除する。
調査結果、次のファイルは不要と思われる。
* app/views/glossary_styles
** edit.html.erb
* app/helpers
** term_categories_helper.rb
* test/fixtures/
** view_styles.yml
* test/functionals/
** glossray_styles_controller_test.rb
** ...
高橋 徹
高徹 13:20 リビジョン d644dae3 (redmine_glossary): Add unit test for term_category
高橋 徹
高徹 13:19 リビジョン eaa3da6d (redmine_glossary): Fix update_all for signature change at Rails 4.0
高橋 徹
高徹 09:35 機能 #83 (却下): Redmine Glossaryプラグインをリファクタリングする
Redminge GlossaryプラグインのRedmine 4.0(Rails 5.2)対応作業を通じて、今後のメインテナンスを良好にするにはリファクタリングが必要と強く感じた。
* Railsのリソース指向な構造に合わせる
** コントローラーのアクションがルーティングでresources/resourceを使うのに馴染まない
** newやeditのアクションの遷移が独特(new→create、edit→updateとなっていない)
* 命名を一貫させ...
高橋 徹

2018/07/14

高徹 22:23 リビジョン fcc808ba (redmine_glossary): change plguin information to require redmine 4.0 and author
高橋 徹
高徹 12:44 機能 #81: Redmine 4.0でglossary pluginを動くようにする
Redmine 4以降で動作するプラグインを作る場合、init.rbのrequires_redmineにバージョンを指定することになるが、trunkのredmineは3.4.6のままなので、テスト時にredmineのバージョンを4.0.0に修正したい。
バージョンを定義するファイルを探したところ
* lib/redmine/version.rb にあり
高橋 徹

2018/07/11

高徹 11:00 リビジョン d06f281f (redmine_glossary): Fix unit tests' fixture, remove unexist table(model)'s test
高橋 徹
高徹 09:58 リビジョン 629e7d4b (redmine_glossary): Add plugin's fixtures directory to read fixtures on test
高橋 徹

2018/07/08

高徹 15:47 リビジョン 8ea83885 (redmine_glossary): Fix test_helper relative path
高橋 徹
高徹 15:46 機能 #81: Redmine 4.0でglossary pluginを動くようにする
テストについても考慮していく必要がある。
まず、現状でテストを実行してみるとどうなるか確認
高橋 徹

2018/07/07

高徹 23:19 リビジョン 33ca4f9a (redmine_glossary): Make routes in match to get/post/patch/delete
高橋 徹
高徹 23:13 リビジョン b48bc663 (redmine_glossary): Fix request parameter to hash explicitly with permition
高橋 徹
高徹 23:06 リビジョン 8af218b4 (redmine_glossary): Make strong parameter instead of attr_accessible
高橋 徹
高徹 22:53 リビジョン bf93ceba (redmine_glossary): Add missing image files of redmine to plugin assets and specified plguin name to image_tag
高橋 徹
高徹 20:32 機能 #81: Redmine 4.0でglossary pluginを動くようにする
削除のルーティング設定について
もとのroutes.rbには、次のように削除のルーティング設定が記載されている。
高橋 徹
高徹 20:19 機能 #81: Redmine 4.0でglossary pluginを動くようにする
ストロングパラメーターの実装に関して、HTTPリクエストパラメーターを受け取ってカテゴリモデルTermCategoryを生成するのは、教科書的にはTermCategoriesControllerであるが、本プラグインの実装では、GlossaryControllerのadd_term_categoryメソッドで生成している。
GlossaryControllerは肥大化しているので、いずれadd_term_categoryをTermCategoriesControl...
高橋 徹
高徹 17:12 機能 #81: Redmine 4.0でglossary pluginを動くようにする
リンクエラー 高橋 徹
高徹 15:54 機能 #81: Redmine 4.0でglossary pluginを動くようにする
GlossaryControllerのnewメソッドがどのタイミングで呼ばれどのようにふるまうのかが謎。
Ruby on Railsの教科書的な作りでは、
* HTTP Client から new リクエスト(GET)でコントローラーのnewメソッド起動
** コントローラーのnewメソッド内で空のモデルをnew
** new.html.erb テンプレートからフォームを含むHTMLをHTTP Clientに返却
* HTTP Client からモデルリソ...
高橋 徹
高徹 08:44 リビジョン ca23dc47 (redmine_glossary): Remove unloadable from models
高橋 徹
高徹 07:52 リビジョン 806ff402 (redmine_glossary): Remove unloadable from controllers
高橋 徹

2018/07/06

高徹 23:48 リビジョン a830d65a (redmine_glossary): Fix missing acts_as_list by gem
高橋 徹
高徹 07:40 リビジョン a1242632 (redmine_glossary): Fix all use of before_filter to before_action
高橋 徹

2018/07/04

高徹 22:51 リビジョン 9eaed6ad (redmine_glossary): db migration with versioning
高橋 徹
高徹 08:00 機能 #81: Redmine 4.0でglossary pluginを動くようにする
redmine:plugins:migrateタスクを実行するとエラー(プラグインによらず、プラグインがなくても) 高橋 徹

2018/07/03

高徹 20:17 リビジョン 7d0b6b7f (redmine_glossary): term link button on wiki toolbar show only project with glosary module
高橋 徹

2018/07/02

高徹 00:16 リビジョン ded315b0 (redmine_glossary): modified deprecated alias_method_chain to prepend
高橋 徹

2018/07/01

高徹 20:48 機能 #81: Redmine 4.0でglossary pluginを動くようにする
h4. alias_method_chain を prepend に置き換える
Wiki編集エリアに表示するツールバーは、JavaScriptで記述され、<Redmine基点>/public/javascripts/jstoolbar/ディレクトリ下にファイルが置かれています。このJavaScriptファイルを読み込むタイミングに割り込み、用語マクロを展開するボタンを1つ追加する処理を入れるものです。
JavaScriptを読み込むメソッドはjavascri...
高橋 徹
高徹 17:42 機能 #81: Redmine 4.0でglossary pluginを動くようにする
#81-3 の内容について追加情報
alias_method_chainでやろうとしていることは、wikiツールバーを表示するJavaScriptを読み込むタイミングをインターセプトして用語リンクのマクロを挿入するボタンを追加すること。
JavaScriptの読み込みタイミングは、javascript_include_tagメソッドを引っ掛け、その引数(JavaScriptファイルのパス)がjstoolbar/textileである、すなわちRedmineのpub...
高橋 徹
 

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