Module: Rake::DevEiate::Extension
- Extended by:
- Rake::DSL
- Defined in:
- lib/rake/deveiate/extensions.rb
Overview
Extension compilation and maintenance tasks
Constant Summary collapse
- EXTENSION_GLOB_PATTERN =
The glob pattern to use when looking for extension config scripts (relative to EXT_DIR).
'**/extconf.rb'
Instance Attribute Summary collapse
-
#disable_rake_compiler ⇒ Object
Set to
trueto indicate that this project provides its own extension-management tasks.
Instance Method Summary collapse
-
#define_extension_tasks ⇒ Object
Set up the tasks to build extensions.
-
#define_tasks ⇒ Object
Define extension tasks.
-
#disable_rake_compiler? ⇒ Boolean
Predicate for the #disable_rake_compiler attribute.
-
#do_extensions_debug(task, args) ⇒ Object
Task function – output debugging for extension tasks.
-
#extensions_present? ⇒ Boolean
Returns
trueif there appear to be extensions as part of the current project. -
#has_rakecompiler_dependency? ⇒ Boolean
Returns
trueif the projects dependencies include ‘rake-compiler`. -
#setup(_name, **options) ⇒ Object
Set some defaults when the task lib is set up.
Instance Attribute Details
#disable_rake_compiler ⇒ Object
Set to true to indicate that this project provides its own extension-management tasks.
31 32 33 |
# File 'lib/rake/deveiate/extensions.rb', line 31 def disable_rake_compiler @disable_rake_compiler end |
Instance Method Details
#define_extension_tasks ⇒ Object
Set up the tasks to build extensions.
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/rake/deveiate/extensions.rb', line 72 def define_extension_tasks ENV['RUBY_CC_VERSION'] ||= RUBY_VERSION[ /(\d+\.\d+)/ ] require 'rake/extensiontask' self.extensions.each do |extconf| Rake::ExtensionTask.new( extconf.pathmap('%{ext/,}d') ) end task :spec => :compile task :maint do ENV['V'] = '1' ENV['MAINTAINER_MODE'] = 'yes' end end |
#define_tasks ⇒ Object
Define extension tasks
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/rake/deveiate/extensions.rb', line 48 def define_tasks super if defined?( super ) if self.extensions_present? if self.has_rakecompiler_dependency? self.define_extension_tasks elsif !self.disable_rake_compiler? warn <<~END_WARNING You appear to have one or more extensions, but rake-compiler is not a dependency. You should either add it to gem.deps.rb or set `disable_rake_compiler` on the project to disable this warning. END_WARNING end end task( :extensions_debug, &method(:do_extensions_debug) ) task :debug => :extensions_debug end |
#disable_rake_compiler? ⇒ Boolean
Predicate for the #disable_rake_compiler attribute.
35 36 37 |
# File 'lib/rake/deveiate/extensions.rb', line 35 def disable_rake_compiler? return self.disable_rake_compiler ? true :false end |
#do_extensions_debug(task, args) ⇒ Object
Task function – output debugging for extension tasks.
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/rake/deveiate/extensions.rb', line 98 def do_extensions_debug( task, args ) self.prompt.say( "Extension config scripts:", color: :bright_green ) if self.extensions.empty? self.prompt.say "None." else self.extensions.uniq.each do |path| self.prompt.say "- %s" % [ path ] end end if self.has_rakecompiler_dependency? self.prompt.say "\n" self.prompt.say "✔ has rake-compiler dependency" end self.prompt.say( "\n" ) end |
#extensions_present? ⇒ Boolean
Returns true if there appear to be extensions as part of the current project.
42 43 44 |
# File 'lib/rake/deveiate/extensions.rb', line 42 def extensions_present? return !self.extensions.empty? end |
#has_rakecompiler_dependency? ⇒ Boolean
Returns true if the projects dependencies include ‘rake-compiler`.
90 91 92 93 94 |
# File 'lib/rake/deveiate/extensions.rb', line 90 def has_rakecompiler_dependency? return self.dependencies.any? do |dep| dep.name == 'rake-compiler' end end |
#setup(_name, **options) ⇒ Object
Set some defaults when the task lib is set up.
20 21 22 23 24 25 |
# File 'lib/rake/deveiate/extensions.rb', line 20 def setup( _name, ** ) super if defined?( super ) self.extensions.include( Rake::DevEiate::EXT_DIR + EXTENSION_GLOB_PATTERN ) @disable_rake_compiler = false end |