Bundler のソース

参考:

Bundler – The best way to manage a Ruby application’s gems [Official]

bundler/bundler: Manage your Ruby application’s gem dependencies – GitHub

Documentation for bundler | RubyDoc.info

主なファイル

lib/bundler/setup.rb

このファイルを require することで、Bundler でインストールした gem を require する準備が完了する。

参考:

bundler/setup.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::EnvironmentPreserver

Bundler を読み込む以前の元の環境変数を保持する機能を提供するクラス。

参考:

bundler/environment_preserver.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::SharedHelpers

共通で使うヘルパーをまとめたモジュール。

参考:

bundler/shared_helpers.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::LockfileParser

ロックファイル (Gemfile.lock) を読み込むためのクラス。

デフォルトのロックファイル (Gemfile.lock) を読み込む。

locked_gems = Bundler::LockfileParser.new(
  Bundler.read_file(Bundler.default_lockfile)
)

参考:

bundler/lockfile_parser.rb at v2.0.1 · bundler/bundler – GitHub

locked_gems – bundler/bundler.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::Dsl

Gemfile で使う DSL を提供するクラス。

参考:

bundler/dsl.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::SourceList

DSL 内で使用されるソースを保持するリスト。

似たようなクラスとして、Bundler::Plugin::SourceListGem::SourceList があるので注意。

参考:

bundler/source_list.rb at v2.0.1 · bundler/bundler – GitHub

bundler/plugin/source_list.rb at v2.0.1 · bundler/bundler – GitHub

rubygems/source_list.rb at v3.0.2 · rubygems/rubygems – GitHub

Bundler.rubygems

Bundler::RubygemsIntegration から派生したクラスのインスタンス。Gem::VERSION のバージョン番号に応じて細かく機能が追加・拡張される。

参考:

bundler/rubygems_integration.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::Source::Rubygems

ローカルにインストール済みの gem あるいは、RubyGems.org の gem を読み込むためのソース。

参考:

bundler/rubygems.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::Runtime

グループを指定して初期化処理やロードパスの準備などのセットアップを行う。

参考:

bundler/runtime.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::Definition

Gemfile とロックファイル (Gemfile.lock) を処理して初期化情報を保持する。

参考:

bundler/definition.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::Index

内部的に gem の spec を配列で返す際の中間処理に使われる。

参考:

bundler/index.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::SpecSet

条件に合致する依存関係を抽出するためのクラス。

参考:

bundler/spec_set.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::Installer

bundle install コマンドから渡されたオプションに応じてインストール処理を行う。

参考:

bundler/installer.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::ParallelInstaller

ワーカープールを使ってインストーラーを並列に実行する。

参考:

bundler/parallel_installer.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::GemInstaller

実際に gem をインストールするインストーラー。

参考:

bundler/gem_installer.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::LazySpecification

gem の名前、バージョン、プラットフォームの組み合わせを与えると、合致する gem の実体をソース内から探し出して spec を返す。

参考:

bundler/lazy_specification.rb at v2.0.1 · bundler/bundler – GitHub

Bundler

Bundler の機能を提供するメインモジュール。

参考:

bundler/bundler.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::CLI

コマンドラインの引数やオプションを解析して処理を実行する。Thor を継承して実装。

参考:

bundler/cli.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::CLI::Binstubs

CLI をセットアップして実行する。

参考:

bundler/binstubs.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::Fetcher

Rubygems サーバーから specification の読み込みや、gem のダウンロードを行う。

参考:

bundler/fetcher.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::Fetcher::Index

gem 名を与えて spec をフェッチする。

参考:

bundler/index.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::Fetcher::CompactIndex

新しく実装された Index

参考:

bundler/compact_index.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::RemoteSpecification

Rubygems サーバー上の specification 情報を表す。必要な specification を遅延読み込みする。

参考:

bundler/remote_specification.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::EndpointSpecification

gemcutter のエンドポイントから作成した specification を格納するクラス。gemcutter による gem のホスティングは RubyGems.org に移行した。

参考:

bundler/endpoint_specification.rb at v2.0.1 · bundler/bundler – GitHub

spec_cache_dirs

specifications がキャッシュされるディレクトリを返す。

Bundler.rubygems.spec_cache_dirs
# => ["/path/to/my_project/vendor/bundle/ruby/2.6.0/specifications",
"/path/to/user_home/.gem/specs"]

参考:

spec_cache_dirs – bundler/rubygems_integration.rb at v2.0.1 · bundler/bundler – GitHub

gemspec_cached_path

キャッシュされた spec のパスを返す。

参考:

gemspec_cached_path – bundler/fetcher.rb at v2.0.1 · bundler/bundler – GitHub

fetchers

ダウンロードに使うフェッチ元のリスト

  • CompactIndex
  • Dependency
  • Index

参考:

fetchers – bundler/fetcher.rb at v2.0.1 · bundler/bundler – GitHub

FETCHERS – bundler/fetcher.rb at v2.0.1 · bundler/bundler – GitHub

Bundler::CLI::Check

Gemfile で要求される gem が依存関係を含めて全てインストールされているか確認する。(Gemfile.lock で固定されている gem のバージョンが  Gemfile で要求されるバージョン条件を満たしているか確認する。)

参考:

bundler/check.rb at v2.0.1 · bundler/bundler – GitHub

to_lock

読み込んだ Gemfile から Gemfile.lock を生成する。

参考:

to_lock – bundler/definition.rb at v2.0.1 · bundler/bundler – GitHub

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA