LoginSignup
13
3

More than 3 years have passed since last update.

[Ruby] require使用時にLoadError。フォルダ名に要注意。

Last updated at Posted at 2019-08-02

はじめに

Minitest実行時にrequireを使用してファイルを分割するという超基本的な部分でLoadErrorが出てしまい先に進めないという状況が続きました。

原因解明に無駄な時間を要してしまったので共有しておきます。
LoadErrorの文面は以下の通りです。

[Running] ruby "/Users/username/Documents/Practice/ test/fizz_buzz_test.rb"
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- ../lib/fizz_buzz (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/username/Documents/Practice/ test/fizz_buzz_test.rb:3:in `<main>'

仕様

RGB変換プログラム作成しました。
ファイルの階層と作成したファイルは以下のとおりです。

Practice/
 ├ lib/
 │ └ rgb.rb  
 └ test/
   └ rgb_test.rb   

rgb.rb
def to_hex(r,g,b)
  [r,g,b].inject('#')do|hex,n|
    hex + n.to_s(16).rjust(2,"0")
  end
end
rgb_test.rb
require 'minitest/autorun'
require './lib/rgb'

class RgbTest < Minitest::Test
  def test_to_hex
    assert_equal '#000000',to_hex(0,0,0)
    assert_equal '#ffffff',to_hex(255,255,255)
  end
end

こちらのrgb_test.rbを実行したところLoadErrorとなりました。
ちなみにファイルを分割せずにMinitestを行なうと正常に作動します。
作成したFileには問題はなさそうです。

原因はフォルダ名にあり

何度も確認しましたが、パスが間違っている感じではない。
Ruby最新版をインストールしてみるも変化無し。。

それでもエラー文を細かく凝視し、見てみると最初の1行に気になる点が、、

ruby "/Users/jibiki/Documents/Practice/ test/fizz_buzz_test.rb"

フォルダ名「/ test/」の部分に謎の空白!
alt
確認してみると、わかりづらいですが確かにフォルダ名の先頭にスペースがありました。
修正したところ無事解決しました。

まとめ

大したことではないただのミスではあるが、こういった個人的なミスは検索しても同じ体験をしている人が出て来にくいため解明に時間を割いてしまいました。

以前に別のファイルでMinitestを実行したところ、LoadErrorで上手く読み込めていなかったことがあったので、そちらのフォルダ名も確認したところ先頭に空白が入っていました。

Macの仕様か、VisualStadioCodeの仕様が原因か分かりませんが、慣れていないとフォルダ作成時に空白が開いてしまう事があるみたいなので注意が必要です。

13
3
2

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
13
3