Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Kernel | require_relative

概要

require_relative(relative_feature) -> bool

詳細

Ruby ライブラリ relative_feature を現在のファイルからの相対パスでロードします。
拡張子補完を行い、 同じファイルの複数回ロードはしません。

ライブラリのロードに成功した時には true を返し、ロードした feature の名前を(拡 張子も含めて) 変数 $" に追加します。
ただし、feature の名前が既に $" に含まれていた場合はロードせずに false を返します。

サンプルコード

読み込み対象
./hoge/hoge.rb

def hoge
  puts "hoge"
end
def grep_loaded(filename)
  file = $".grep(filename).first
  file ? File.basename(file) : ''
end

# require 前に $" を確認
puts grep_loaded(/hoge/)

# 初回 load 成功のため true を返す
ret = require_relative './hoge/hoge'
puts grep_loaded(/hoge\/hoge/)
puts ret

# load済みのため false を返す
ret = require_relative './hoge/hoge'
puts grep_loaded(/hoge\/hoge/)
puts ret

出力

hoge.rb
true
hoge.rb
false