Help us understand the problem. What is going on with this article?

【Ruby】外部ファイル読み込み require・require_relative・load・autoloadの違い

外部ファイル読み込みの違いを明確にしたかったのでまとめてみました。

require("絶対パスまたは相対パス")

ライブラリや外部ファイルを絶対パス、相対パスで読み込む(1回のみ読み込み)

require_relative("絶対パス")

ライブラリや外部ファイルを絶対パスで読み込む(1回のみ読み込み)
 

load("絶対パスまたは相対パス")

ライブラリや外部ファイルをファイルを絶対パス、相対パスで読み込む(再読み込み、拡張子は省略できない)
loadはrequireやrequire_relativeよりも再読み込みするため遅くなる
 

autoload("クラス/モジュールの定数", "絶対パスまたは相対パス")

定数を最初に参照した時に第2引数を絶対パス、相対パスで読み込む(1回のみ読み込み)
クラス・モジュールの遅延ロードを実現

まとめ

モジュール関数 パスの仕方 読み込み回数    遅延ロード       
require 絶対・相対パス 1回 ✖︎
require_relative 絶対パス 1回 ✖︎
load 絶対パス、相対パス 再読み込み ✖︎
autoload 絶対パス、相対パス 1回

参考
Ruby 2.7.0 リファレンスマニュアル

yuusaito
Railsエンジニア🔥 人に教えるのが好きでQitta始めました⭐️ 少しでもお役に立てたら幸いです✨
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away