8000 cocoonをgemからnpm版に変更する · Issue #8605 · fjordllc/bootcamp · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
8000

cocoonをgemからnpm版に変更する #8605

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
komagata opened this issue May 7, 2025 · 6 comments
Open

cocoonをgemからnpm版に変更する #8605

komagata opened this issue May 7, 2025 · 6 comments

Comments

@komagata
Copy link
Member
komagata commented May 7, 2025

nestしているリソースを1つのフォームで扱うのにcocoon gemを利用しているが、こちらをnpm版のcocoonに乗り換えたい。

gem版はだいぶ昔にメンテされなくなっているし、jquery依存など依存しているものが古すぎてrailsアップグレードの障害になっているため。

@komagata komagata added this to bootcamp May 7, 2025
@komagata komagata moved this to いつかやる in bootcamp May 7, 2025
@komagata komagata moved this from いつかやる to やる in bootcamp May 7, 2025
@komagata komagata moved this from やる to 今のイテレーション in bootcamp May 25, 2025
@masyuko0222
Copy link
Contributor

@komagata

こちらをnpm版のcocoonに乗り換えたい。

こちらは具体的に以下のnpmを指しているでしょうか?
https://www.npmjs.com/package/@nathanvda/cocoon

npm版でもjQuery依存は変わらないようなので、必要でしたら代替手段の検討から始めたいと思います。

@komagata
Copy link
Member Author

なんと、npm版でもjQuery依存あるんですね。
ではおっしゃってる通りの調査をしていただければありがたいです。

@masyuko0222
Copy link
Contributor
masyuko0222 commented May 26, 2025

@komagata
既存のcocoon利用箇所をcocoonedへリプレイスする方向で考えています。
下記にその理由と、他の代替ライブラリとの比較結果を示しますので、cocoonedへのリプレイスで問題がないかご確認頂ければと思います。

cocooned(候補)

https://github.com/notus-sh/cocooned

  • メンテナンス状況:◎
    • 直近3か月以内に更新されています。
  • 移行コスト:小
    • 既存のcocoon によるViewヘルパーをcocoonedのものに書き換えるだけ
    • cocoonで使っていたイベント名(例: after-insert, before-remove)はそのまま使える(jQueryの書換は必要)
  • Webpack、Importmapどちらも対応可能

その他

stimulus-rails-nested-form

https://github.com/stimulus-components/stimulus-rails-nested-form

  • メンテナンス状況:△
  • 移行コスト:中
    • Stimulus を前提としているためViewの構造を変える必要がある
    • jQuery で書かれていたcallbackもStimulusに書き換える必要がある
  • Webpack、Importmapどちらも対応可能

cocoon-js-vanilla

https://www.npmjs.com/package/cocoon-js-vanilla

  • メンテナンス状況:△
    • 最終更新は約1年前
  • 移行コスト:なし
    • 既存の cocoon によるViewヘルパーをそのまま使えるのでViewの変更が不要
    • cocoonで使っていたイベント名(例: after-insert, before-remove)はそのまま使える(jQueryの書換は必要)
  • npmとして提供
    • ただし、内部的にはcocoon gemに依存しているためリプレイスの意味がない

Reactへ書換

  • 移行コストが大きく、cocoonを使っていた意味がなくなるため検討外
名前 メンテ状況 jQuery依存 Viewの変更
cocooned ◎(直近で更新あり) なし
stimulus-rails-nested-form △(1年以上前) なし
cocoon-js-vanilla △(1年以上前) なし なし

以上より、メンテナンス・移行コストという面からcocoonedが最もよいかなと思いました。
また、現状ではStimulusを使っていない点からも、cocooned + バニラJSが適しているかなと思います。

@komagata
Copy link
Member Author

@masyuko0222 調査ありがとうご 8000 ざいます。
おお、cocoonedってあるんですね〜

cocoonedがいいかな〜と思います。

@masyuko0222
Copy link
Contributor
masyuko0222 commented May 26, 2025

@komagata
1点ご質問させてください。

cocooned gemを導入するにあたり、モジュールバンドラーにWebpackを利用する方法と、Sprocketsを利用する方法があります。

Load Cocooned JavaScript

今回はRails6ということもあり、Webpackを選んだのですがよろしかったでしょうか?

ただ元々cocoonはSprocketsを利用していることもあり、Rails7系ではWebpackはどうせ非推奨になるので、既存のnpm同様、Sprocketsを使うでもよかったかなぁとも思っています。

ご意見頂ければです。

@komagata
Copy link
Member Author

@masyuko0222 webpackをsprocketsに移行するとなると他のJavaScriptも全部移行することになるのでwebpackのままでお願いします。

rails7へ移行する作業が進行中で、Vue.jsやReactを排除することができたら、rails7に移行しつつ、js-bundling-railsに移行する予定です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 今のイテレーション
Development

No branches or pull requests

2 participants
0