Class | Module |
In: |
lib/rake.rb
|
Parent: | Object |
Rake extensions to Module.
const_missing | -> | rake_original_const_missing |
Rename the original handler to make it available. |
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.
# 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
# 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