PATHは第1世代の依存関係をgemspecから直接リストするのに対し、GEMは第2世代の依存関係(つまり、依存関係が依存するもの)とGemfileからの依存関係をリストするように見えます。PATH :: remoteは.
、PATH :: specに属しているものを見つけるために現在のディレクトリのローカルgemspecに依存しているためです。一方、GEM :: remoteはrubygems.org
、GEM ::に属しているものを見つけるために移動する必要があるためです。スペック。
RailsプラグインではPATHセクションが表示されますが、Railsアプリでは表示されません。アプリにはgemspecファイルがないので、PATHに入れるものは何もありません。
依存関係については、gembundler.comは次のように述べています。
Runtime dependencies in your gemspec are treated like base dependencies,
and development dependencies are added by default to the group, :development
によって生成されたGemfile rails plugin new my_plugin
は同様のことを言っています:
# Bundler will treat runtime dependencies like base dependencies, and
# development dependencies will be added by default to the :development group.
これが意味することは、
s.add_development_dependency "july" # (1)
そして
s.add_dependency "july" # (2)
(1)は、開発環境のGemfile.lock(およびアプリケーション)に「july」のみを含めるということです。したがって、を実行するとbundle install
、PATHだけでなくDEPENDENCIESの下にも "開発中"と表示されます。本番環境ではまったく存在しません。ただし、(2)を使用すると、依存関係ではなくPATHにのみ「july」が表示されますbundle install
が、本番環境(依存関係として自分を含む他のgemなど)からは表示されますが、開発のみ。
これらは私の見解であり、なぜこれがどのようになっているのかを完全に説明することはできませんが、私はさらなるコメントを歓迎します。