Когда вы сказали "I tried to add "require_relative" to file1 in my spec and still does not work"
вы говорили о file2_spec.rb?
Кажется, что у вас нет требуемого_релятивного файла File2?
С ниже, я получаю то же самое, как вы:
$ find -type f ./lib/modules/file1.rb ./lib/modules/file2.rb ./spec/file2_spec.rb $ cat lib/modules/file1.rb puts "hello world" $ cat lib/modules/file2.rb require 'file1' $ cat spec/file2_spec.rb require_relative '../lib/modules/file2' $ ruby spec/file2_spec.rb /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- file1 (LoadError) from /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /apps/stackoverflow/lib/modules/file2.rb:1:in `<top (required)>' from spec/file2_spec.rb:1:in `require_relative' from spec/file2_spec.rb:1:in `<main>'
Но с относительно включения в file2.гь, она отлично работает:
$ cat spec/file2_spec.rb require_relative '../lib/modules/file2' $ cat lib/modules/file2.rb require_relative 'file1' $ ruby spec/file2_spec.rb hello world
Это сказало, если вы хотите создать библиотеку, то это, вероятно, стоит настройки вашего LOAD_PATH правильно, так что вы не должны делать это везде:
$ cat spec/file2_spec.rb $LOAD_PATH.unshift("{File.dirname(__FILE__)}/../lib/modules") require 'file2' $ cat lib/modules/file2.rb require 'file1' $ ruby spec/file2_spec.rb hello world
(или просто настроить ваш переменные среды и т.д.)
NB, использование
require './file1'
делает требует относительно рабочего каталога, так что это не эквивалентно
require_relative 'file1'
попробовал это и did'nt работал –
какая ошибка m essage? тоже самое? –
Он просто не принял требование «./file1» и сломал не только тест, но и программу. Я решил это, добавив require = File.expand_path ('path', File.dirname (__ FILE__)). спасибо за ваши усилия, при поддержке, дайте мне указания. –