lib/capistrano/multiconfig/configurations.rb in capistrano-multiconfig-0.0.1 vs lib/capistrano/multiconfig/configurations.rb in capistrano-multiconfig-0.0.2

- old
+ new

@@ -30,12 +30,14 @@ config_names.each do |config_name| segments = config_name.split(':') namespace_names = segments[0, segments.size - 1] task_name = segments.last - # create configuration task block - block = lambda do + # create configuration task block. + # NOTE: Capistrano 'namespace' DSL invokes instance_eval that + # that pass evaluable object as argument to block. + block = lambda do |parent| desc "Load #{config_name} configuration" task(task_name) do # set configuration name as :config_name variable self.set(:config_name, config_name) @@ -46,17 +48,42 @@ end end end # wrap task block into namespace blocks + # + # namespace_names = [nsN, ..., ns2, ns1] + # + # block = block0 = lambda do |parent| + # desc "DESC" + # task(:task_name) { TASK } + # end + # block = block1 = lambda { |parent| parent.namespace(:ns1, &block0) } + # block = block2 = lambda { |parent| parent.namespace(:ns2, &block1) } + # ... + # block = blockN = lambda { |parent| parent.namespace(:nsN, &blockN-1) } + # block = namespace_names.reverse.inject(block) do |child, name| - lambda do - namespace(name, &child) + lambda do |parent| + parent.namespace(name, &child) end end - # create configuration task - block.call + # create namespaced configuration task + # + # block = lambda do + # namespace :nsN do + # ... + # namespace :ns2 do + # namespace :ns1 do + # desc "DESC" + # task(:task_name) { TASK } + # end + # end + # ... + # end + # end + block.call(top) end # set configuration names list set(:config_names, config_names) end