先日下記のイベントでLT登壇してきました。
(LTでイベント登壇するのは初めてだったので実績解除した🏆)
資料はこちら💎
内容は、bundle gem
でGemを作ったときに依存するgemをGemfile
とgemspec
どっちに書くか的な話でした。
最終的な結論としては、下記のような形で発表しました。
- RUNTIME依存性(実行時に依存するGem): 依存性解決時にGemfileが参照されないのでgemspecに書く
- DEVELOP依存性(開発時に依存するGem): いろんな考え方があるけどGemfileに書いたほうが良さそう
RUNTIME依存性に関しては、一応事前にrubygemsのコードを読んでなんとなくinstall時の依存周りの解決方法を理解していた気になっていたのですが、最後までちゃんと理解できておらず自信なかったので概要だけさらっと話すだけになってしまいましたが、コードリーディングのメモはこちら📝
DEVELOP依存性については色々な考え方があるようですが、bundlerにbundle gem
時の開発系のgemのデフォルトの記載先がgemspec
のadd_development_dependency
からGemfile
に変わったようなので、今後はGemfile側に記載するのが主流になるのかなと思いました。
ですが、登壇中にタイムリーに投稿頂いた下記の記事にもある通り考え方次第だと思うので自分の使いやすいように使い分けるのが良さそうですね😅
結論という結論は特になく、現状だと Gemfile でしか指定できないことは Gemfile をもちいて行うしかなく、あとは考え方次第のスタイルという感じではないだろうかと理解している。
今回、自分で普段Gemを作るときに軽く疑問に思ったことをテーマに決めたのですが、bundlerの中でそれに関するコミットが検討中にマージされたり、Rubyコミュニティで話題に上がってたテーマだったりと色々とタイムリーで昨今のRubyGems周りの流れも知れたので色々と勉強になってよかったなぁと思いました。
参加頂いた方、いろいろとアドバイスを頂いた方、ありがとうありがとうございました🙇♂️