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

Rake extensions to Module.

Methods

External Aliases

const_missing -> rake_original_const_missing
  Rename the original handler to make it available.

Public Instance methods

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.

[Source]

      # 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

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

[Source]

    # 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

[Validate]