как потребовать мою библиотеку в шеф-повара 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.

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос