module Statistrano::Deployment::RakeTasks

Public Class Methods

register(deployment) click to toggle source

Register the rake tasks for the deployment @return [Void]

# File lib/statistrano/deployment/rake_tasks.rb, line 12
def register deployment
  deployment.config.tasks.each do |task_name, task_attrs|
    in_namespace rake_namespace(deployment) do
      register_task deployment, task_name, task_attrs
    end
  end

  deployment.config.user_tasks.each do |task_obj|
    in_namespace rake_namespace(deployment) do
      register_in_namespace_recursive deployment,
                                      task_obj[:name],
                                      task_obj[:desc],
                                      task_obj[:namespaces],
                                      task_obj[:block]
    end
  end
end

Private Class Methods

in_namespace(namespace) { || ... } click to toggle source
# File lib/statistrano/deployment/rake_tasks.rb, line 36
def in_namespace namespace, &block
  namespace namespace do
    yield
  end
end
rake_namespace(deployment) click to toggle source
# File lib/statistrano/deployment/rake_tasks.rb, line 32
def rake_namespace deployment
  deployment.name.to_sym
end
register_in_namespace_recursive(deployment, task_name, task_desc, task_space, block) click to toggle source
# File lib/statistrano/deployment/rake_tasks.rb, line 49
def register_in_namespace_recursive deployment, task_name, task_desc, task_space, block
  if task_space.empty?
    register_user_task deployment, task_name, task_desc, block
  else
    in_namespace task_space.first do
      register_in_namespace_recursive deployment, task_name, task_desc, task_space[1..-1], block
    end
  end
end
register_task(deployment, task_name, attrs={}) click to toggle source
# File lib/statistrano/deployment/rake_tasks.rb, line 42
def register_task deployment, task_name, attrs={}
  desc attrs[:desc]
  task task_name do
    deployment.public_send attrs[:method]
  end
end
register_user_task(deployment, task_name, task_desc, block) click to toggle source
# File lib/statistrano/deployment/rake_tasks.rb, line 59
def register_user_task deployment, task_name, task_desc, block
  t = task task_name do
    if block.arity == 1
      block.call deployment
    else
      block.call
    end
  end
  t.add_description(task_desc) if task_desc
end