対象リポジトリ
作成したPR(2つ)
キリ番 999 と 1000 をゲットした。やったぜ
起きていた問題
reactionviewのデバッグモードで出力するoverlay labelというものがある。

DOMツリーに動的に要素を追加してくれるのだけど少しイケていない感じだったので修正した。
まずoverlay labelを position: absolute で追加するために親要素を位置基準要素にする必要がある。既存の実装では position: relative を設定しているが、
parent.style.position = 'relative';
これだと元々のposition値として absolute , fixed , sticky が設定されているとレイアウト崩れが発生してしまう。 relative であればそもそも設定する必要がないので getComputedStyle() で取得した値が static の時だけ relative 設定すればいいという判断をした。
Window: getComputedStyle() メソッド - Web API | MDN
おそらくこれは実装選択肢の余地がないので気に入らなかったらrejectしてもらうしかないかなって感じでPRをまとめた。
次に、reactionviewのデバッグモードなんだけど実はちゃんと layouts/application.html.erb にもoverlay labelを出力しているがviewportからはみ出していることに気づいた。


overlay labelを追加しているならちゃんとviewportに納めたいよねってことでもう一つPRを作成した。ただしこちらに関しては「そもそもCSSでスタイル定義しているのにスクリプトで条件分岐してスタイル上書きするのが実装として散らかってるな〜」と感じている。既存実装にならって条件分岐したがあまり好ましい実装とは思えないのでその部分を質問しつつPRを作成した。
余談: ローカルでの動作検証が面倒くさい
さて、このherbにあるJavaScript部分はテストが用意されていない。Rubyが出力するdebug情報とも密結合しているのでなかなかテストも書きづらいのだろうと勝手に納得しつつ、ローカルでの動作検証が最初どうやればいいか分からなかった。合っているかどうかは分からないけどとりあえず出来た方法を書き残しておく。
- ローカル環境にherbリポジトリ、reactionviewリポジトリ、何かしらのRailsアプリケーションの3つを用意する
- herbにあるTypeScriptを修正して
yarn build - reactionviewのdev-toolsディレクトでシンボリックリンク貼る
$ pwd /Users/kozy4324/work/reactionview/javascript/packages/dev-tools/src $ ls -l total 8 lrwxr-xr-x@ 1 kozy4324 staff 60 12 21 10:27 dev-tools -> /Users/kozy4324/work/herb/javascript/packages/dev-tools/dist -rw-r--r--@ 1 kozy4324 staff 3493 12 21 10:28 index.ts
- reactionviewにあるTypeScriptでモジュール読み込み先を変更
$ git diff -- index.ts
diff --git a/javascript/packages/dev-tools/src/index.ts b/javascript/packages/dev-tools/src/index.ts
index 7adf7b7..1f4f558 100644
--- a/javascript/packages/dev-tools/src/index.ts
+++ b/javascript/packages/dev-tools/src/index.ts
@@ -1,4 +1,4 @@
-import { initHerbDevTools, HerbOverlay, type HerbDevToolsOptions } from "@herb-tools/dev-tools"
+import { initHerbDevTools, HerbOverlay, type HerbDevToolsOptions } from "./dev-tools/herb-dev-tools.esm"
export interface ReActionViewDevToolsOptions extends HerbDevToolsOptions {
projectPath?: string
- reactionviewで
yarn build - RailsアプリケーションのGemfile修正して
bundle install
$ git diff -- Gemfile diff --git a/Gemfile b/Gemfile index 6052a88..02334ee 100644 --- a/Gemfile +++ b/Gemfile @@ -66,7 +66,7 @@ group :test do end -gem "reactionview", "~> 0.2.0" +gem "reactionview", path: "/Users/kozy4324/work/reactionview" gem "tailwindcss-rails", "~> 4.3"
とやることで解決した。どう考えても面倒くさすぎる。ここら辺の正しいやり方を確認しておきたい。