Скажем, у меня есть два локально существующих модуля, которых нет в Forge или в настраиваемом репозитории, подобном Forge. Эти репозитории никогда не будут установлены через командную строку, поскольку они являются частью более крупного развертывания, которое не может использовать команды установки, подобные Forge, - они помещаются туда вручную или путем клонирования репо.
ModuleA
определяет функцию в своем functions
папка и может быть вызвана в рамках ModuleA
. Все хорошо.
ModuleB
пытается вызвать функцию из ModuleA
и терпит неудачу как из-за того, что модуль не установлен и не доступен для манифеста JSON.
Можно ли как следует обойти это ограничение? Таким образом можно вызывать классы - я не хочу жертвовать хорошим дизайном ради этого неудобного ограничения.
Выяснили это - если вы хотите импортировать функции для модуля в то же пространство, все, что вам нужно сделать, это включить модуль в dependencies
в metadata.json
файл для модуля, который импортирует (ModuleB в моем вопросе выше). Использование manifest
в их документации сбивает с толку - включая его в metadata
было бы правильнее.
Итак, узел зависимости в metadata.json
файл будет чем-то вроде
"dependencies": [
{ "name":"puppetlabs/apt","version_requirement":"6.0.0" },
{ "name": "mycompany/moduleb", "version_requirement": "> 0.0.1" }
]
с moduleb
содержащий импортируемые функции. Это, вероятно, означает, что вы не можете правильно использовать Кузницу Марионеток, но если вы столкнетесь с этой проблемой, вы, вероятно, не сильно потеряете там.