module Rake::DevEiate::Extension

Extension compilation and maintenance tasks

Constants

EXTENSION_GLOB_PATTERN

The glob pattern to use when looking for extension config scripts (relative to EXT_DIR).

Attributes

disable_rake_compiler[RW]

Set to true to indicate that this project provides its own extension-management tasks.

Public Instance Methods

define_extension_tasks() click to toggle source

Set up the tasks to build extensions.

# File lib/rake/deveiate/extensions.rb, line 71
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() click to toggle source

Define extension tasks

Calls superclass method
# File lib/rake/deveiate/extensions.rb, line 47
        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?() click to toggle source

Predicate for the disable_rake_compiler attribute.

# File lib/rake/deveiate/extensions.rb, line 34
def disable_rake_compiler?
        return self.disable_rake_compiler ? true :false
end
do_extensions_debug( task, args ) click to toggle source

Task function – output debugging for extension tasks.

# File lib/rake/deveiate/extensions.rb, line 97
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?() click to toggle source

Returns true if there appear to be extensions as part of the current project.

# File lib/rake/deveiate/extensions.rb, line 41
def extensions_present?
        return !self.extensions.empty?
end
has_rakecompiler_dependency?() click to toggle source

Returns true if the projects dependencies include `rake-compiler`.

# File lib/rake/deveiate/extensions.rb, line 89
def has_rakecompiler_dependency?
        return self.dependencies.any? do |dep|
                dep.name == 'rake-compiler'
        end
end
setup( _name, **options ) click to toggle source

Set some defaults when the task lib is set up.

Calls superclass method
# File lib/rake/deveiate/extensions.rb, line 19
def setup( _name, **options )
        super if defined?( super )

        self.extensions.include( Rake::DevEiate::EXT_DIR + EXTENSION_GLOB_PATTERN )
        @disable_rake_compiler = false
end