Sha256: 42be372279aa215becff0554048bd8adf00ad096e802ec6403ad34aa8b1be696

Contents?: true

Size: 877 Bytes

Versions: 6

Compression:

Stored size: 877 Bytes

Contents

#
# I would love to claim credit for this code, but I cannot. It comes from the
# good folk over at metaskills.net
#
# http://www.metaskills.net/2010/5/26/the-alias_method_chain-of-rake-override-rake-task
#

Rake::TaskManager.class_eval do
  def alias_task( fq_name )
    new_name = "#{fq_name}:original"
    @tasks[new_name] = @tasks.delete(fq_name)
  end

  def remove_task( fq_name )
    @tasks.delete(fq_name.to_s)
  end
end

def alias_task( fq_name )
  Rake.application.alias_task(fq_name)
end

def override_task( *args, &block )
  name = Rake.application.resolve_args(args.dup).first
  fq_name = Rake.application.instance_variable_get(:@scope).dup.push(name).join(':')
  alias_task(fq_name)
  Rake::Task.define_task(*args, &block)
end

def remove_task( *args )
  args.flatten.each { |fq_name| Rake.application.remove_task(fq_name) }
end
alias :remove_tasks :remove_task

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
bones-3.9.0 lib/bones/rake_override_task.rb
bones-3.8.5 lib/bones/rake_override_task.rb
bones-3.8.4 lib/bones/rake_override_task.rb
bones-3.8.3 lib/bones/rake_override_task.rb
bones-3.8.2 lib/bones/rake_override_task.rb
bones-3.8.1 lib/bones/rake_override_task.rb