Как вызвать метод из другого рецепта?

Я пытаюсь получить доступ к методу в рецепте «B» кулинарной книги «b» из рецепта «A» кулинарной книги «a». Я включил рецепт «B» в рецепт «A», используя include_recipe «cookbook::recipe».

    #cookbook Flower
    #chef recipe 'Rose' DSL
     def method_to_be_called 
        do something
     end

    #cookbook Animal
    #chef recipe 'Tiger' DSL
    include_recipe "Flower::Rose"
      #call method_to_be_called of 'Rose' recipe
   end

Я изучаю Ruby и Chef DSL, поэтому я не знаю, чего я пытаюсь достичь, возможно или нет. Если да, то как мне вызвать метод? Заранее спасибо.


person user1725651    schedule 16.03.2015    source источник
comment
Привет и добро пожаловать в Stack Overflow. очень сложно понять, что вы пытаетесь сделать, просто по словесному описанию вашего кода. Вместо этого, не могли бы вы отредактировать свой вопрос и добавить в него соответствующий раздел кода? (не просто отвечайте в комментариях, потому что форматирование кода ужасно)   -  person Taryn East    schedule 16.03.2015
comment
Спасибо за ваш быстрый ответ. Я отредактировал вопрос.   -  person user1725651    schedule 16.03.2015
comment
Вы не должны определять методы в рецептах. Для этого предусмотрены библиотеки. docs.chef.io/libraries.html   -  person Draco Ater    schedule 16.03.2015
comment
Спасибо. Могу я узнать причину, по которой не рекомендуется не определять методы в рецепте?   -  person user1725651    schedule 16.03.2015


Ответы (1)


Шеф работает не так. Вы можете обернуть свой метод в библиотеку и назвать его таким образом.

Например, поместите свой метод в:

# cookbook/rose/libraries/helper.rb
class Rose
   def self.method_to_be_called
   end
end

# cookbook/tiger/recipes/default.rb
Rose.method_to_be_called()
person Adam Jacob    schedule 16.03.2015
comment
Хорошо. Спасибо! Можно ли вызвать атрибут узла внутри этого метода, который будет в библиотеке? - person user1725651; 17.03.2015