LoginSignup
34
40

More than 5 years have passed since last update.

require と require_relative って何が違うの?

Posted at

はじめに

自作関数を記述したファイルをrequireメソッドで別ファイルから実行しようとしたところ、
Atomのauto_runnerを利用して実行すると以下のようなエラーが出るのに、コマンドラインから実行すると正常終了する。。。
ということでrequireとrequire_relativeの違いを調べてみました。

:/Ruby24-x64/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- ./setVar.rb (LoadError)
    from C:/Ruby24-x64/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from ディレクトリ名/test.rb:4:in `<main>'

require メソッド

$LOAD_PATHに指定されているディレクトリから相対パスで該当のファイルを探しに行く
※$LOAD_PATHについてはこちら

require_relative メソッド

実行したいファイル(ここではtest.rb)のディレクトリからの相対パスで該当のファイルを探しに行く



要はAtomのカレントディレクトリを指定していたので上手くいかなかったんですね。
でも「どうしてもrequireを使いたい!」という場合は、$LOAD_PATHにカレントディレクトリを指定しましょう。

LOAD_PATHの追加についてはこちらの記事を参考にしました
参考:require がロードするファイルを探すパスに追加をする

34
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
40