module Terraspace::Compiler::HelperExtender
Private Instance Methods
extend_module_level_helpers()
click to toggle source
# File lib/terraspace/compiler/helper_extender.rb, line 4 def extend_module_level_helpers full_dir = "#{@mod.root}/config/helpers" Dir.glob("#{full_dir}/**/*").each do |path| regexp = Regexp.new(".*/helpers/") klass = path.sub(regexp, '').sub('.rb','').camelcase klass = "#{mod_namespace}::#{klass}" require path # able to use require instead of load since each helper has unique namespace send :extend, klass.constantize end end
mod_namespace()
click to toggle source
IE: mod_namespace
= Terraspace::Module::Demo Use separate namespaces scope with module name so custom helper methods from different modules are isolated.
# File lib/terraspace/compiler/helper_extender.rb, line 17 def mod_namespace mod_name = @mod.name.camelcase ns = "Terraspace::#{@mod.type.camelcase}".constantize # IE: Terraspace::Module or Terraspace::Stack if ns.const_defined?(mod_name.to_sym) "#{ns}::#{mod_name}".constantize else ns.const_set(mod_name, Module.new) end end