Ruby on Rails: модули по сравнению с классами

Я пытаюсь добавить функцию, которая будет доступна всюду по всем частям моей программы. Я хочу что-то как:

def GlobalFunctions.my_function(x,y)
    puts x + y
end

быть доступным для всех моделей. Конкретно я пытаюсь использовать функцию как это в моем seeds.rb файле, но я, скорее всего, собираюсь быть многократным использованием кода, и не хотят дублирования. Теперь я знаю, что могу сделать простой класс, но я мог также сделать модуль. Что некоторые причины состоят в том, чтобы войти в любое направление? И после того как я выбрал, какой тип использовать, как я делаю его доступным всюду по целой программе?

Я попробовал модуль, но я продолжаю заставлять "Ожидаемое приложение / [файл модуля] определять [ModuleName]"

19
задан JackCA 11 March 2010 в 18:55
поделиться

2 ответа

Вы должны определить класс для чего-то, что вы хотите создать экземплярами. В этом случае модуль, вероятно, был бы лучше, поскольку модули в основном просто группируют код вместе:

module GlobalFunctions
  def self.my_function(x,y)
    puts x+y
  end
end

GlobalFunctions.my_function(4,5) # => 9

В качестве альтернативы вы можете определить его в ядре, а затем просто вызвать его где угодно. В ядре определены такие методы, как put.

def Kernel.my_function(x,y)
  puts x + y
end

my_function(4,5) # => 9
43
ответ дан 30 November 2019 в 02:11
поделиться

PreciousBodilyFluids правильно, и если этот GlobalFunctions является частью проекта RoR, вы можете назвать файл global_functions.rb и поместить его в каталог lib/, чтобы избежать сообщения об ошибке, которое вы опубликовали в конце своего вопроса.

2
ответ дан 30 November 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: