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::SourceList
、Gem::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