Class
Module
In: lib/rake.rb
Parent: Object

Rake extensions to Module.

Methods

const_missing, rake_extension, rake_original_const_missing,
Public Instance methods
const_missing(const_name)

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.

This method is also aliased as const_missing
      # File lib/rake.rb, line 2461
2461:   def const_missing(const_name)
2462:     case const_name
2463:     when :Task
2464:       Rake.application.const_warning(const_name)
2465:       Rake::Task
2466:     when :FileTask
2467:       Rake.application.const_warning(const_name)
2468:       Rake::FileTask
2469:     when :FileCreationTask
2470:       Rake.application.const_warning(const_name)
2471:       Rake::FileCreationTask
2472:     when :RakeApp
2473:       Rake.application.const_warning(const_name)
2474:       Rake::Application
2475:     else
2476:       rake_original_const_missing(const_name)
2477:     end
2478:   end
rake_extension(method) {|| ...}

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
    # File lib/rake.rb, line 62
62:   def rake_extension(method)
63:     if instance_methods.include?(method.to_s) || instance_methods.include?(method.to_sym)
64:       $stderr.puts "WARNING: Possible conflict with Rake extension: #{self}##{method} already exists"
65:     else
66:       yield
67:     end
68:   end
rake_original_const_missing(const_name)

Alias for const_missing