2012-02-27 6 views
0

Я строю веб-приложение в Синатрой и у меня есть куча файлов в/Lib/шашкам/требующие файлы в Руби

Я в настоящее время требуя от них, делая это:

require File.expand_path(File.dirname(__FILE__) + '/lib/checkers/board.rb') 
require File.expand_path(File.dirname(__FILE__) + '/lib/checkers/checker.rb') 

который, кажется, немой, но я попытался

require '/lib/checkers' 

или

require '/lib/checkers/' 

или

require File.expand_path(File.dirname(__FILE__) + 'lib/checkers/') 

и другие варианты по тому же самому их, но ничего, кажется, работает. Вы можете помочь?

+0

http://stackoverflow.com/questions/735073/best-way-to-require-all-files-from-a-directory-in-ruby –

+0

положить каталог 'lib' в ваш путь include' $: '(если его еще нет), а затем просто« требуют »шашек/платы и' требуют 'шашек/checker''. –

+0

Нет, вам не нужно использовать методы из этого другого вопроса. –

ответ

4
require_relative 'lib/checkers/board' 
require_relative 'lib/checkers/checker' 

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

Кроме того, settings.root вернет корневую директорию вашего приложения, не нужно использовать File.dirname(__FILE__).

Это работает в Ruby 1.9 без каких-либо специальных методов с помощью комментариев выше.

Если вы используете 1.8, вы можете сделать это

require './lib/checkers/board' 
require './lib/checkers/checker' 

Другие методы 1.8 перечислены в this question.

+0

Обратите внимание, что require_relative доступен только в Ruby> = 1.9.2. См. [Этот пост] (http://stackoverflow.com/questions/4333286/ruby-require-vs-require-relative-best-practice-to-workaround-running-in-both) для получения дополнительной информации, если вы решите пойти с этим решением. – user2398029

+0

@louism благодарит за меня. Я начал изучать Ruby с 1.9, поэтому я склонен забывать о проблемах в 1.8. –