Class: MCollective::Vendor

Inherits:
Object
  • Object
show all
Defined in:
lib/mcollective/vendor.rb

Overview

Simple module to manage vendored code.

To vendor a library simply download its whole git repo or untar into vendor/libraryname and create a load_libraryname.rb file to add its libdir into the $:.

Once you have that file, add a require line in vendor/require_vendored.rb which will run after all the load_* files.

The intention is to not change vendored libraries and to eventually make adding them in optional so that distros can simply adjust their packaging to exclude this directory and the various load_xxx.rb scripts if they wish to install these gems as native packages.

Class Method Summary collapse

Class Method Details

.load_entry(entry) ⇒ Object



21
22
23
24
# File 'lib/mcollective/vendor.rb', line 21

def load_entry(entry)
  Log.debug("Loading vendored #{$1}")
  load "#{vendor_dir}/#{entry}"
end

.load_vendoredObject



30
31
32
33
34
35
36
37
38
# File 'lib/mcollective/vendor.rb', line 30

def load_vendored
  Dir.entries(vendor_dir).each do |entry|
    if entry.match(/load_(\w+?)\.rb$/)
      load_entry entry
    end
  end

  require_libs
end

.require_libsObject



26
27
28
# File 'lib/mcollective/vendor.rb', line 26

def require_libs
  require 'mcollective/vendor/require_vendored'
end

.vendor_dirObject



17
18
19
# File 'lib/mcollective/vendor.rb', line 17

def vendor_dir
  File.join([File.dirname(File.expand_path(__FILE__)), "vendor"])
end