Top Level Namespace

Defined Under Namespace

Modules: Inetmgr Classes: String

Constant Summary collapse

IisConfiguration =
Inetmgr::IisConfiguration

Instance Method Summary collapse

Instance Method Details

#create_task(taskname, task_object_proc, &execute_body) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/rake/inetmgrtask.rb', line 33

def create_task(taskname, task_object_proc, &execute_body)
  taskclass = :"Inetmgr_TaskFor_#{taskname}"
  taskmethod = taskname.to_s.downcase.to_sym

  Object.class_eval(<<-EOF, __FILE__, __LINE__)
    def #{taskmethod}(name=:#{taskname}, *args, &block)
      Inetmgr.const_get("#{taskclass}").new(name, *args, &block)
    end
  EOF

  Inetmgr.class_eval do
    const_set(taskclass, Class.new(Inetmgr::InetmgrTask) do
      define_method :execute do |name|
        task_object = task_object_proc.call

        call_task_block(task_object)
      	execute_body.call(task_object) unless execute_body.nil?
      end
    end)
  end
end