как потребовать мою библиотеку в шеф-повара ruby_block
Я разрабатываю кулинарную книгу для развертывания простого приложения ROR. Я пишу app_helper.rb и помещаю его в каталог библиотек моей поваренной книги, вот содержание:
module AppHelper
def self.find_gem
if File.exists?("/usr/local/rvm/bin/rvm")
return `/usr/local/rvm/bin/rvm default exec which gem`.chomp
else
return "/usr/bin/gem"
end
end
end
В recipes / default.rb я смешиваю вышеупомянутый модуль с классом Chef :: Recipe
class Chef::Recipe
include AppHelper
end
Как вы знаете, функцию find_gem можно вызывать из любого места рецепта.
когда я пытаюсь использовать функцию find_gem в моем ruby_block следующим образом:
ruby_block "find gem" do
block do
gem_bin = Chef::Recipe::find_gem
# or gem_bin = find_gem
end
end
Я получил NoMethodError: неопределенный метод 'find_gem'.
Также попробуйте добавить модуль в Chef :: Resource :: RubyBlock, он тоже не работает.
class Chef::Resource::RubyBlock
include AppHelper
end
ruby_block "find gem" do
block do
gem_bin = Chef::Resource::RubyBlock::find_gem
# or gem_bin = find_gem
end
end
Есть ли способ вызвать функцию в модуле из ruby_block? Или есть переменная chef для размещения файлов в библиотеках, чтобы я мог требовать модуль в ruby_block.
Спасибо!