RSpec (2.12.2) に苦労しています。仕様の 1 つでクラスを参照したいが、そのクラスが/lib
ディレクトリのルートにない場合、エラーがスローされます。
no such file to load -- test (LoadError)
私の仕様はフォルダー構造にネストできるようですが、ネストされたフォルダー (たとえばlib/workers/conversion_worker.rb
) にあるクラスを要求しようとすると、このエラーが発生します。
すべての仕様で require 'spec_helper' を使用していますが、クラスのパスをハードコーディングしても同じエラーが発生します。
この構造では:
-lib/
- class_found.rb
- workers/
- class_not_found.rb
仕様は次のようになります。
# spec/workers/class_not_found_spec.rb
require "spec_helper"
require "class_not_found"
describe ClassNotFound do
it "Does something"
end
以下は、spec を正常に実行します (-I フラグは $LOAD_PATH へのパスを追加します)。
$ rspec spec/workers/class_not_found_spec.rb -I /Path/to/project/*
そのため、RSpec はそのパスに lib の下に何も追加していないようです。
require_relative を使用して、class_not_found.rb を正常に要求できます。
require_relative "../../lib/workers/class_not_found.rb" #Succeeds
ただし、require を使用しない場合:
require "lib/workers/class_not_found.rb" # Fails