Ruby/Rubyの基礎知識

require, require_relative, load, autoloadの違い

別ファイルのコードを読み込む関数には、requireをはじめいくつかの種類があります。その動作の違いを説明します

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

軽い書き捨てスクリプトを除けば、Rubyコードは複数ファイルにまたがることが普通です。別のファイルに書かれたコードを読み込むために、いくつかメソッドが用意されています。それらの使い方を比較して行きます。

require

最も基本的なメソッドはrequireです。ロードしたいファイルまでのパスを記載します。拡張子の「.rb」は省略可能です。

ディレクトリ内にrequire_a.rbrequire_b.rbというファイルがあるとして、aからbを読み込んでみます。

例にある通り、同じディレクトリにあるファイルであってもファイル名を書くだけではロードすることが出来ず、カレントディレクトリ「.」を付ける必要があります。

require relative

require_relativeは「そのファイルが置かれているディレクトリ」からの相対パスで記載されたファイルを解釈できます。例えば、以下の様なディレクトリ構成でファイルが置かれているとき、

abc/foo.rb の中から abc/def/bar.rb をロードするには次のようにします。

Rubyでは実行中ファイルまでの絶対パスを__FILE__で取得できるので、例にあるようにFile.expand_pathFile.dirnameを組み合わせてrequire_relativeと同じく相対パスでのロードをさせることもできます。

次のページでは、ロードパス(LOAD_PATH)の概念について解説します。

  • 1
  • 2
  • 3
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます