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)
-
- (Object) define_inline_tasks
Define tasks for plugin.
Instance Method Details
- (Object) define_inline_tasks
Define tasks for plugin.
24 25 26 27 28 29 30 31 32 33 34 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 |
# File 'lib/hoe/inline.rb', line 24 def define_inline_tasks extra_deps << ['RubyInline', "~> 3.8.4"] clean_globs << File.("~/.ruby_inline") task :test => :clean if ENV['INLINE'] then s.platform = ENV['FORCE_PLATFORM'] || Gem::Platform::CURRENT # Try collecting Inline extensions for +name+ if defined?(Inline) then directory 'lib/inline' dlext = Config::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 end end |