Как ссылаться на метод в другом файле кода Ruby?

У меня есть файл кода Ruby (somelogic.rb), который содержит несколько методов и классов, расположенных в файле say/home/user/code. Теперь я пишу еще один класс в том же каталоге и хотел бы ссылаться на методы и классы в somelogic.rb. Как мне это сделать? Я очень признателен за любые данные.

Ответы

Ответ 1

Если вы используете Ruby 1.9 или новее, это самый простой способ сделать это:

require_relative 'somelogic'

Если вы хотите, чтобы ваш код работал в 1,9 и более старых версиях Ruby, вы должны сделать это вместо:

require File.join File.dirname(__FILE__), 'somelogic'

Какую строку вы выберете, вы должны поместить ее в верхнюю часть своего рубинового файла. Тогда в вашу программу будут доступны любые классы, модули или глобальные переменные, определенные в somelogic.rb.

Ответ 2

Вот сценарий:

/home/user/code/somelogic.rb
class MyMath
  def self.sin(number)
    ...
  end
end

Вы хотите использовать методы sin в другом файле mylogic.rb.

В зависимости от версии ruby ​​сделайте следующее:

Ruby 1.8.x
require "somelogic"
class OtherThings
  def some_method
    MyMath.sin(42)
  end
end

Шаблон использования для всех версий ruby ​​одинаковый, но оператор require может отличаться.

Ruby 1.9.x
require_relative "somelogic"

или вариации

Ruby 1.9.x
require "./somelogic"

Первая вариация работает все время, вторая - только в том случае, если вы вызываете ruby mylogic.rb в каталоге, где расположены mylogic.rb и somelogic.rb.

Если вы хотите загрузить файлы из этого каталога из начальной точки, расположенной в другом каталоге, вы должны использовать:

Ruby 1.8.x and Ruby 1.9.x
$: << File.dirname(__FILE__)

Это расширяет путь загрузки Ruby. Он читает (относительный) путь __FILE__, получает его каталог и добавляет (абсолютный) путь этого каталога к вашему пути загрузки. Поэтому при выполнении поиска require файлы будут найдены.

Ответ 4

Во втором файле (скажем, otherlogic.rb) в первой строке введите "/home/user/code/somelogic.rb".