boot.rb
bundlerの読み込みと設定を担当しているファイルであり、Railsの起動時(コンソールやサーバー)に実行されます。
中身はこうなっています。
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) require 'bundler/setup' # Set up gems listed in the Gemfile.
Gemfileの場所をENV['BUNDLE_GEMFILE']に格納してbundler/setupをrequireしてます。
bundler/setupを見てみます。
https://github.com/bundler/bundler/blob/master/lib/bundler/setup.rb
とりあえずBundler.setupしてますね。
Bundler.setupはGemfile.lockの中身です。railsコンソールで実行するとこうなります。

よって、boot.rbはrails起動時にgemの場所を教える役割を負っています。
また、このboot.rbはconfig/application.rbやbin/railsから呼ばれています。
つまり、bin/rails g controllerする時なんかも呼ばれているみたいですね。
試しにconfig/boot.rbの中身を変更して確認してみます。
#config/boot.rb ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) puts "******************************" puts ENV['BUNDLE_GEMFILE'] puts "******************************" require 'bundler/setup' # Set up gems listed in the Gemfile.
これで、rails g modelを実行します。
$ rails g model user name:string address:string
******************************
/Users/asmsuechan/rails/boot_test/Gemfile
******************************
Running via Spring preloader in process 39902
invoke active_record
create db/migrate/20160224023804_create_users.rb
create app/models/user.rb
invoke test_unit
create test/models/user_test.rb
create test/fixtures/users.yml
確認できました。