# module Hoe::Compiler

rake-compiler plugin for hoe c-extensions.

This plugin is for extconf.rb based projects that want to use rake-compiler to deal with packaging binary gems. It expects a standard extconf setup, namely that your extconf.rb and c source is located in: ext/project-name.

Look at nokogiri for a good example of how to use this.

### Tasks Provided:¶ ↑

compile

  Compile your c-extension.

### Attributes

compile_tasks[RW]

Optional: Defines what tasks need to be compile first. [default: test]

### Public Instance Methods

activate_compiler_deps() click to toggle source

Activate the rake-compiler dependencies.

    # File lib/hoe/compiler.rb, line 32
    def activate_compiler_deps
      dependency "rake-compiler", "~> 0.9", :development

      gem "rake-compiler", "~> 0.9"
    rescue LoadError
      warn "Couldn't load rake-compiler. Skipping. Run `rake newb` to fix."
    end

define_compiler_tasks() click to toggle source

Define tasks for compiler plugin.

    # File lib/hoe/compiler.rb, line 49
    def define_compiler_tasks
      require "rake/extensiontask"

      @extensions.each do |name|
        clean_globs << "lib/#{name}/*.{so,bundle,dll}"

        Rake::ExtensionTask.new name, spec do |ext|
          ext.lib_dir = File.join(*["lib", name.to_s, ENV["FAT_DIR"]].compact)
        end
      end

      compile_tasks.each do |t|
        task t => :compile
      end
    rescue LoadError
      warn "Couldn't load rake-compiler. Skipping. Run `rake newb` to fix."
    end

extension(name) click to toggle source

    # File lib/hoe/compiler.rb, line 40
    def extension name
      @extensions ||= []
      @extensions << name
      spec_extras[:extensions] = @extensions.map { |n| "ext/#{n}/extconf.rb" }
    end

initialize_compiler() click to toggle source

Initialize variables for compiler plugin.

    # File lib/hoe/compiler.rb, line 25
    def initialize_compiler
      self.compile_tasks = [:multi, :test, :check_manifest]
    end