Top Level Namespace
Defined Under Namespace
Modules: Poise
Instance Method Summary collapse
-
#Poise(options = {}) ⇒ Object
Callable form to allow passing in options: include Poise(ParentResource) include Poise(parent: ParentResource) include Poise(container: true).
Instance Method Details
#Poise(options = {}) ⇒ Object
Callable form to allow passing in options: include Poise(ParentResource) include Poise(parent: ParentResource) include Poise(container: true)
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/poise.rb', line 37 def Poise(={}) # Allow passing a class as a shortcut if .is_a?(Class) = {parent: } end # Create a new anonymous module mod = Module.new # Fake the name. mod.define_singleton_method(:name) do super() || 'Poise' end mod.define_singleton_method(:included) do |klass| super(klass) # Pull in the main helper to cover most of the needed logic. klass.class_exec { include Poise } # Set the defined_in values as needed. klass.poise_defined!(caller) # Resource-specific options. if klass < Chef::Resource klass.poise_subresource([:parent], [:parent_optional], [:parent_auto]) if [:parent] klass.poise_subresource_container([:container_namespace]) if [:container] klass.poise_fused if [:fused] klass.poise_inversion([:inversion_options_resource]) if [:inversion] end # Provider-specific options. if klass < Chef::Provider klass.poise_inversion([:inversion], [:inversion_attribute]) if [:inversion] end end mod end |