Implement Recipe::DSL#evaluate method:

Move recipe DSL evaluation in a dedicated #evaluate method, instead of
evaluating the code during the DSL instantiation.
This commit is contained in:
Thibault Jouan
2013-07-29 15:27:29 +00:00
parent 37e17d1030
commit 30e1930719
2 changed files with 55 additions and 23 deletions

View File

@@ -13,7 +13,7 @@ module Producer
end
def evaluate
dsl = DSL.new(@code)
dsl = DSL.new(@code).evaluate
dsl.tasks.each.map(&:evaluate)
end
@@ -22,12 +22,18 @@ module Producer
attr_reader :tasks
def initialize(code = nil, &block)
@tasks = []
if code
instance_eval code
@code = code
@block = block
@tasks = []
end
def evaluate
if @code
instance_eval @code
else
instance_eval &block
instance_eval &@block
end
self
end