#はじめに
自作関数を記述したファイルを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 がロードするファイルを探すパスに追加をする