Module: Hoe::Inline

Defined in:
lib/hoe/inline.rb

Overview

Hoe allows bundling of pre-compiled extensions in the package task.

To create a package for your current platform:

rake package INLINE=1

This will force Hoe analize your Inline already compiled extensions and include them in your gem.

If somehow you need to force a specific platform:

rake package INLINE=1 FORCE_PLATFORM=mswin32

This will set the Gem::Specification platform to the one indicated in FORCE_PLATFORM (instead of default Gem::Platform::CURRENT)

Instance Method Summary collapse

Instance Method Details

#activate_inline_depsObject

Activate the inline dependencies.



28
29
30
# File 'lib/hoe/inline.rb', line 28

def activate_inline_deps
  dependency "RubyInline", "~> 3.9"
end

#define_inline_tasksObject

Define tasks for plugin.



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/hoe/inline.rb', line 35

def define_inline_tasks
  task :test => :clean

  return unless ENV["INLINE"]

  s.platform = ENV["FORCE_PLATFORM"] || Gem::Platform::CURRENT

  return unless defined? Inline

  # Try collecting Inline extensions for +name+
  directory "lib/inline"

  dlext = RbConfig::CONFIG["DLEXT"]

  Inline.registered_inline_classes.each do |cls|
    name = cls.name.gsub(/::/, "")
    # name of the extension is CamelCase
    alternate_name = if name =~ /[A-Z]/ then
                       name.gsub(/([A-Z])/, '_\1').downcase.sub(/^_/, "")
                     elsif name =~ /_/ then
                       name.capitalize.gsub(/_([a-z])/) { $1.upcase }
                     end
    extensions = Dir.chdir(Inline.directory) {
      Dir["Inline_{#{name},#{alternate_name}}_*.#{dlext}"]
    }

    extensions.each do |ext|
      # add the inlined extension to the spec files
      s.files += ["lib/inline/#{ext}"]

      # include the file in the tasks
      file "lib/inline/#{ext}" => ["lib/inline"] do
        cp File.join(Inline.directory, ext), "lib/inline"
      end
    end
  end
end

#initialize_inlineObject

:nodoc:



21
22
23
# File 'lib/hoe/inline.rb', line 21

def initialize_inline # :nodoc:
  clean_globs << File.expand_path("~/.ruby_inline")
end