Class: Module

Inherits:
Object
  • Object
show all
Defined in:
lib/rake/ext/core.rb,
lib/rake/ext/module.rb

Overview

Rake extensions to Module.

Instance Method Summary collapse

Instance Method Details

#const_missing(const_name) ⇒ Object

Check for deprecated uses of top level (i.e. in Object) uses of Rake class names. If someone tries to reference the constant name, display a warning and return the proper object. Using the --classic-namespace command line option will define these constants in Object and avoid this handler.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/rake/ext/module.rb', line 21

def const_missing(const_name)
  case const_name
  when :Task
    Rake.application.const_warning(const_name)
    Rake::Task
  when :FileTask
    Rake.application.const_warning(const_name)
    Rake::FileTask
  when :FileCreationTask
    Rake.application.const_warning(const_name)
    Rake::FileCreationTask
  when :RakeApp
    Rake.application.const_warning(const_name)
    Rake::Application
  else
    rake_original_const_missing(const_name)
  end
end

#rake_extension(method) ⇒ Object

Check for an existing method in the current class before extending. IF the method already exists, then a warning is printed and the extension is not added. Otherwise the block is yielded and any definitions in the block will take effect.

Usage:

class String
  rake_extension("xyz") do
    def xyz
      ...
    end
  end
end


20
21
22
23
24
25
26
# File 'lib/rake/ext/core.rb', line 20

def rake_extension(method)
  if method_defined?(method)
    $stderr.puts "WARNING: Possible conflict with Rake extension: #{self}##{method} already exists"
  else
    yield
  end
end

#rake_original_const_missingObject

Rename the original handler to make it available.



14
# File 'lib/rake/ext/module.rb', line 14

alias :rake_original_const_missing :const_missing