Когда требуются файлы, файл должен находиться в списке каталогов с именем $ LOAD_PATH.Текущий каталог был в этом списке, но по состоянию на 1.9.2 он был удален по соображениям безопасности.
У вас есть четыре варианта (перечислены в порядке их хорошего уровня)
1 Измените структуру каталогов так, чтобы она выглядела следующим образом
.
|-- lib
| `-- bowling.rb
`-- spec
`-- bowling_spec.rb
И затем запустите какrspec spec
вместо ruby bowling_spec.rb
Это работает, потому что RSpec увидит, что lib находится в вашем текущем каталоге, а затем добавит его в $ LOAD_PATH для вас.
Если вы сделаете это, у вас также не будетв require 'rspec'
.
2 Запустите с ruby -I . bowling_spec.rb
, который добавит текущий каталог в $ LOAD_PATH
3 Используйте require_relative 'bowling'
вместо require 'bowling'
.
Это будет искать файл bowling.rb относительно текущего запускаемого файла (bowling_spec.rb)
4 Использовать require('../bowling', __FILE__)
вместо require 'bowling'
Thisв основном то же, что и выше.
Другие вопросы:
Q: Почему я получаю LoadError, когда bowling.rb и bowling_spec.rb находятся в одной папке?
A: Поскольку текущий каталог (каталог, из которого вы запускаете скрипт, а не каталогфайлы находятся в) не находится в $ LOAD_PATH.
Q: В ошибке, что, черт возьми, ... / site_ruby / 1.9.1 / ... когда я работаюruby 1.9.2, тогда почему 1.9.1 вообще появляется?
A: Хмм.Не уверен, что я точно помню, но IIRC, это было что-то вроде того, что они настолько похожи, что интерфейс не изменился, поэтому они могли быть совместимы с 1.9.1 с точки зрения системы.
Q: как мне преодолеть этот горб и начать веселиться с рубином.
A: Полагаю, это зависит.Если проблема заключается в том, что вы хотите иметь возможность запускать файлы, находящиеся в вашем CWD, вы можете добавить переменную среды RUBYLIB в .
в свой файл .bash_profile (или любой другой эквивалент в вашей системе), который сообщит Ruby:ищите в текущем каталоге файлы.Однако это может привести к ошибкам (и может привести к непреднамеренному выполнению файлов Ruby, что создает угрозу безопасности).Если вы просто имеете в виду «как начать учиться» или какой интересный проект?Затем ознакомьтесь с одним из моих проектов, Ruby Kickstart , который за шесть сессий проведет вас через довольно большую часть Ruby и предложит вам написать и развернуть простое веб-приложение к концу.