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
確認できました。