2014-11-08 4 views
0

Я установил драгоценный камень state_machine. Отчет «gem list» сообщает, что он установлен локально. Я действительно использую этот камень успешно.Rake не может загрузить такой файл

$ ruby peer_state_machine_test.rb 

отлично работает. Однако, когда я пытаюсь грабить, я ударил по ошибке, чтобы загрузить этот драгоценный камень.

peer_state_machine.rb:1:in `require': cannot load such file state_machine (LoadError) 

Строка файла в вопросе:

require 'state_machine' 

Я запутался, как есть разница в том, как рубин нагрузок этот файл и загружает его граблями. Есть много других тестовых файлов, которые работают без проблем. Это касается OS X, если это имеет значение.

+0

'require' работает, глядя на' $ LOAD_PATH' для первого файла с именем 'state_machine.rb'. Быстрый способ увидеть ваш по умолчанию '$ LOAD_PATH':' ruby ​​-e 'помещает $:' '. Чтобы узнать, что это такое в контексте команды «rake», создайте файл с именем «Rakefile» с этим содержимым: 'task: x do; ставит $ :; end' и запустить 'rake x'. На моей машине простой Ruby '$ LOAD_PATH' является подмножеством в контексте' rake'. Если у вас такая же ситуация, «LoadError» может означать, что «плохая» версия 'state_machine.rb' живет где-то в' rake'-context '$ LOAD_PATH' перед любым местоположением в plain' $ LOAD_PATH'. –

+0

Вместо 'require 'state_machine'', попробуйте:' require_relative'./State_machine'' – Surya

ответ

0

Я писал камень и забыл добавить драгоценность state_mahine в качестве зависимости развития от моего gemspec. Добавление

spec.add_development_dependency "state_machine", "~> 1.2.0" 

разрешил проблему.

Смежные вопросы