Class: Module
- Inherits:
-
Object
- Object
- Module
- Defined in:
- lib/rake/ext/core.rb,
lib/rake/ext/module.rb
Overview
Core extension library
Instance Method Summary collapse
-
#const_missing(const_name) ⇒ Object
Check for deprecated uses of top level (i.e. in Object) uses of Rake class names.
-
#rake_extension(method) ⇒ Object
Check for an existing method in the current class before extending.
-
#rake_original_const_missing ⇒ Object
Check for deprecated uses of top level (i.e. in Object) uses of Rake class names.
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_missing ⇒ 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. Rename the original handler to make it available.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/rake/ext/module.rb', line 14 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 |