Module: Wright::DSL

Defined in:
lib/wright/dsl.rb

Overview

Includable Wright script DSL.

Contains resource methods for all registered resources.

Examples:

# define a new resource at runtime
class KitchenSink < Wright::Resource; end

# register the resource
Wright::DSL.register_resource KitchenSink

extend Wright::DSL

kitchen_sink "I don't do anything"

# resource methods accept blocks
kitchen_sink 'I am sooo useful' do |k|
  puts k.name
end
# output: I am sooo useful

# save resource for later use
a_sink_to_remember = kitchen_sink 'Me too, me too!'
a_sink_to_remember.class
# => KitchenSink

Defined Under Namespace

Classes: Util

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.register_resource(resource_class) ⇒ void

This method returns an undefined value.

Registers a class as a resource.

Creates a resource method in the DSL module. Uses the snake-cased class name as method name.

Typically resource_class is a subclass of Resource. It is initialized with the resource's name and the attribute hash as arguments.

Parameters:

  • resource_class (Class)

    the resource class


80
81
82
83
84
85
86
# File 'lib/wright/dsl.rb', line 80

def self.register_resource(resource_class)
  method_name = Wright::Util.class_to_resource_name(resource_class)
  this_module = self
  define_method(method_name) do |name, args = {}, &block|
    this_module.yield_resource(resource_class, name, args, &block)
  end
end

.yield_resource(resource_class, name, args) {|Resource| ... } ⇒ void

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This method returns an undefined value.

Instantiates a resource and performs its default action.

Implicitly invoking a block from within another block does not work: blog.sidu.in/2007/11/ruby-blocks-gotchas.html

Parameters:

  • resource_class (Class)

    the resource class

  • name (String)

    the name of the resource object

  • args (Hash<Symbol, Object] the attribute hash of the resource)

    rgs [Hash<Symbol, Object] the attribute hash of the resource

Yields:


100
101
102
103
104
105
# File 'lib/wright/dsl.rb', line 100

def self.yield_resource(resource_class, name, args)
  r = resource_class.new(name, args)
  yield(r) if block_given?
  r.run_action if r.respond_to?(:run_action)
  r
end

Instance Method Details

#utilWright::DSL::Util

Supplies access to various useful helper methods.

Returns:


65
66
67
# File 'lib/wright/dsl.rb', line 65

def util
  Wright::DSL::Util.new
end