Bundler 提供了复杂的第三方 Gem 与项目代码的 $LOAD_PATH 自动化管理的解决方案。
Rails App 在 Gemfile 声明的 Gem 在启动的时候就会通过 Bundler 整理好并构建正确的 $LOAD_PATH, 大体分为 2 步:
# $APP_ROOT/config/boot.rb
require 'rubygems'
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
# app/config/application.rb
require File.expand_path('../boot', __FILE__)
require 'rails/all'
Bundler.require(*Rails.groups(:assets => %w(development test)))
# 此处省略module定义,内容和具体的项目相关
这样一个 Rails App 就知道自己在运行时的 $LOAD_PATH, 接下来就可以对类文件按需加载了。