Я пытаюсь добавить функцию, которая будет доступна всюду по всем частям моей программы. Я хочу что-то как:
def GlobalFunctions.my_function(x,y)
puts x + y
end
быть доступным для всех моделей. Конкретно я пытаюсь использовать функцию как это в моем seeds.rb файле, но я, скорее всего, собираюсь быть многократным использованием кода, и не хотят дублирования. Теперь я знаю, что могу сделать простой класс, но я мог также сделать модуль. Что некоторые причины состоят в том, чтобы войти в любое направление? И после того как я выбрал, какой тип использовать, как я делаю его доступным всюду по целой программе?
Я попробовал модуль, но я продолжаю заставлять "Ожидаемое приложение / [файл модуля] определять [ModuleName]"
Вы должны определить класс для чего-то, что вы хотите создать экземплярами. В этом случае модуль, вероятно, был бы лучше, поскольку модули в основном просто группируют код вместе:
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
PreciousBodilyFluids правильно, и если этот GlobalFunctions
является частью проекта RoR, вы можете назвать файл global_functions.rb
и поместить его в каталог lib/
, чтобы избежать сообщения об ошибке, которое вы опубликовали в конце своего вопроса.