Я пытаюсь написать LWRP, где на основе условий он будет вызывать методы из вспомогательной библиотеки. У меня проблема с синтаксисом при получении провайдером чтения внешнего метода.
Провайдер довольно прост
# providers/provider.rb require_relative '../libraries/acx_shared' include Acx action :create do Chef::Log.debug('{jefflibrary->lwrp->user} - start') if @new_resource.shared == true Acx::User::Shared.true_shared() else Acx::User::Shared.false_shared() end if @new_resource.sudo == true Chef::Log.error('I HAVE THE POWER') else Chef::Log.error('my power is weak and feeble') end if @new_resource.password == true Chef::Log.error('the secret password is 12345') else Chef::Log.error('I will never tell you the secret to the airlock') end Chef::Log.debug('{jefflibrary->lwrp->user} - end') end
вместе с вспомогательной библиотекой
#libraries/acx_shared.rb module Acx module User module Shared def true_shared #puts blah Chef::Log.error('I am pulling this from a library reference') end def false_shared Chef::Log.error('I am not very good at sharing') end end end end
но всякий раз, когда я пытаюсь запустить его независимо от установленных атрибутов ресурса, я продолжаю получать
NoMethodError ------------- undefined method `false_shared' for Acx::User::Shared:Module
Мне явно чего-то не хватает в документации по написанию вспомогательной библиотеки, но я не уверен, что именно. Пытался переместить кое-что, но идеи заканчивались.