Rubygemを開発していて、他のgemを参考にしていると定義していないはずのメソッドが急に呼ばれていたりして「これ独自定義?じゃないよな……あ、やはりgemを使っている」としばらくして気づいた。
どうして途中まで依存したgemの存在に気づかなかったのかというと、
Gemfileに書かれてもいないし、requireも別のファイルに記述されていて気づかなかった。
gemのgemどこ問題、みんな引っかかったりしないの……?
gemspec
Rubygemが依存しているgemはGemfileには書かないケースもあるらしい。
依存しているgemは、gemspecにadd_runtime_dependency
と記述されている。
gemspecのデフォルトにも、よく見たらここに登録してくれよって書いてあった。
# Uncomment to register a new dependency of your gem # spec.add_dependency "example-gem", "~> 1.0"
Rubygemの開発に使用するgemはadd_runtime_dependency
と書くと良い。
# gemspec spec.add_development_dependency 'rspec', '~> 3.0'
で、Gemfileはこれだけにしておけばよいのだ。
# Gemfile source "https://rubygems.org" # Specify your gem's dependencies in hoge.gemspec gemspec
気になります
oauth2を見ると、Gemfileに記述されているではないか。
一体どういうルールの差で違いがあるのか掴めなかったので、知っている人がいたら教えて下さい:pray: