技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

requireとloadの違い

requireとloadの違い

毎回忘れるので備忘録として残します。

Rubyのrequire

Rubyでrequireを利用する時は以下のようなケースです。

1. 組み込みライブブリ以外(標準ライブラリ)を読み込むとき。
2. 自分で作成したRubyプログラムを組み込む場合。

1. 組み込みライブブリ以外(標準ライブラリ)を読み込むとき。

構文)

require ライブラリ名

例)

#Dateクラスは組み込みライブラリではないので、そのままでは使用できない
Date.today#=>NameError:uninitializedconstantDate

#dateライブラリを読み込むとDateクラスが使えるようになる
require'date'
Date.today#=>#<Date:20170407((2457851j,0s,0n),+0s,2299161j)>

2. 自分で作成したRubyプログラムを組み込む場合。

Rubyを実行しているディレクトリからの相対パス、または絶対パスで指定します。

同じディレクトリの場合)

require'./sample.rb'

Rubyのload

loadを使う機会はあまりないですが、requireとの使い分けをする必要があるので内容を記載します。

requireは1回しか、ライブラリやrbファイルを読み込みません。

例)

#自分で書いたプログラムを読み込む
require'./sample'#=>true

#不具合があったので、sample.rbを修正する

#しかし、もう一度requireしてもすでに読み込み済みなので修正が反映されない
require'./sample'#=>false

こういう場合はloadを利用すべきです、loadは毎回無条件で指定したファイルを読み込むことができます。

load'./sample.rb'#=>true
#loadを使うと無条件に再読み込みできる(なのでファイルの変更が反映される)

load'./sample.rb'#=>true

※ ちなみにloadの場合は.rbを省略出来ないです。

参考

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus | 伊藤 淳一 | コンピュータ・IT | Kindleストア | Amazon