Upgrade to Pro — share decks privately, control downloads, hide ads and more …


 Gemを作るときの依存関係の書き方について
 もう一度考えてみた

madogiwa
January 15, 2020


 Gemを作るときの依存関係の書き方について
 もう一度考えてみた

2020/01/15 
 あなたの知ってるRubyGemsTips


madogiwa

January 15, 2020
Tweet

Other Decks in Technology

Transcript

  1. gemにおける依存の書き方のおさらい
 Gemfile / gemspec(add_development_dependency, add_dependency)
 add_development_dependency
 -> DEVELOPMENT依存性
   開発時に依存するgem


    add_dependency
 -> RUNTIME依存性
   実行時に依存するgem
 ※add_dependencyはadd_runtime_dependencyのailias
  https://guides.rubygems.org/specification-reference

  2. gemを作るのにGemfileは必要ない
 
 
 
 
 gemの最小構成
 gemspecがあればgemが作れる
 gemspecを作り、
 gem build

    gemspecでビルドして
 .gemファイルを作ってあげれば、
 install可能なgemが作れる
 -> gem installにGemfileは必要ない 
 Ruby 2.7.0 リファレンスマニュアル library rubygems 
 https://docs.ruby-lang.org/ja/2.7.0/library/rubygems.html 
 

  3. 実行時に依存するgemは、
 gemspecに書いたほうが良さそう
 > It’s best practice to specify all the

    gems that our library depends on in the gemspec.
 > https://bundler.io/v2.0/guides/creating_gem.html#getting-started 
 開発時に依存するものは・・・?
 ということで、、、

  4. • requires等を使いたい
 `gem ‘rubocop, require: true`行ってBundler.requireでrequireし たい
 • RubyGems.org以外に配置してあるgemを参照した い


    まだRubyGems.orgに公開されてない開発中のgemが公開され るまで`source`を指定してinstallしたい等
 bundler独自の機能を使いたいケース

  5. コミュニティでの議論
 • Please deprecate (and/or rename) `add_development_dependency` #1104 
 https://github.com/rubygems/rubygems/issues/1104

    
 `add_develop_dependency`は非推奨にして、Gemfileに書くようにした方がいいんじゃないか?と いった議論がされている。(現在はClose済み) 
 • Remove `add_development_dependency` from new gems #7222 
 https://github.com/rubygems/bundler/pull/7222 
 `bundle gem`実行時に`add_develop_dependency`に記載されていたものがGemfileに記載され るようになった。(bundler 2.1.0でリリースされてる) 
 開発時に依存するgemをどっちに書くか