Ruby: require vs require_relative - лучший способ обхода, работающий как в Ruby <1.9.2, так и в> = 1.9.2

Что лучше всего, если я хочу требовать относительного файла в Ruby и . Я хочу, чтобы он работал и в 1.8.x, и в> = 1.9 .2?

Я вижу несколько вариантов:

  • просто выполните $ LOAD_PATH << '.' и забудьте все
  • сделать $ LOAD_PATH << Имя_файла (__ FILE__)
  • require './path/to/file'[1232 providedcheck if RUBY_VERSION <1.9.2, затем определите require_relative как require , используйте require_relative везде, где это необходимо, потом
  • проверьте, существует ли require_relative , если это так, попробуйте продолжить, как в предыдущем случае
  • используйте странные конструкции, такие как
     require File .join (File.dirname (__ FILE__), 'path / to / file') 
    - увы, они не делают 't, похоже, полностью работает в Ruby 1.9, потому что, например:
     $ cat caller.rb
    требуется File.join (File.dirname (__ FILE__), 'путь / к / файлу')
    $ cat путь / к / file.rb
    ставит "Некоторое тестирование"
    $ рубиновый абонент
    Некоторое тестирование
    $ pwd
    / tmp
    $ рубин / tmp / вызывающий
    Некоторое тестирование
    $ ruby ​​tmp / вызывающий
    tmp / caller.rb: 1: in 'require': такого файла для загрузки нет - tmp / path / to / file (LoadError)
    - Фактически, я уже упомянул большинство рассматриваемых вариантов. Мне нужно  обоснование , т.е. , почему  это лучшая практика, каковы ее плюсы и минусы и почему ее следует выбирать среди других. 

153
задан Community 23 May 2017 в 11:54
поделиться