Рубин требует путь - PullRequest
       5

Рубин требует путь

12 голосов
/ 29 августа 2010

У меня есть код Ruby с разными классами в нескольких файлах.В одном файле я запускаю исполнение.Этот файл require s мои другие файлы.

  • Это хороший способ запустить код рубина?
  • Когда я запускаю код по символической ссылке, например DIR2/MyRubyCode это ссылка на основной файл DIR1/MyRubyCode.rb, тогда мои запросы не удастся.Я решил проблему, добавив путь DIR1 к $LOAD_PATH перед require, но я думаю, что было бы гораздо лучшие способы сделать это.У вас есть предложения по этому поводу?

Ответы [ 3 ]

17 голосов
/ 16 декабря 2013

Если вы используете Ruby 1.9 или выше, для ваших зависимостей используйте require_relative пользователя.

require_relative 'foo_class'
require_relative 'bar_module'
16 голосов
/ 29 августа 2010

Если вы хотите проверить, является ли файл Ruby 'require' редактируемым или выполняемым с 'ruby MyRubyCode.rb', проверьте константу __FILE__.

# If the first argument to `ruby` is this file.
if $0 == __FILE__
  # Execute some stuff.
end

Насколько требуется/ $ LOAD_PATH проблема, вы всегда можете использовать относительный путь в инструкции require.Например:

# MyRubyCode.rb
require "#{File.dirname(__FILE__)}/foo_class"
require "#{File.dirname(__FILE__)}/bar_module"

Что включает файлы foo_class.rb и bar_module.rb в том же каталоге, что и MyRubyCode.rb.

6 голосов
/ 02 июня 2013

Я знаю, что это старый вопрос, но есть обновленный ответ на него, и я хотел опубликовать его:

Начиная с более новой версии Ruby (я не уверен, когда), вы можете запрашивать файлы в том же каталоге, используя следующую команду:

require './foo_class'
require './bar_module'

и он загрузит файлы с именами foo_class.rb и bar_module.rb в один каталог.

Для проверки того, что ваш файл require d или работает нормально, проверьте другой ответ.

...