Class MCollective::Vendor
In: lib/mcollective/vendor.rb
Parent: Object

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.

Methods

Public Class methods

[Source]

    # File lib/mcollective/vendor.rb, line 21
21:             def load_entry(entry)
22:                 Log.debug("Loading vendored #{$1}")
23:                 load "#{vendor_dir}/#{entry}"
24:             end

[Source]

    # File lib/mcollective/vendor.rb, line 30
30:             def load_vendored
31:                 Dir.entries(vendor_dir).each do |entry|
32:                     if entry.match(/load_(\w+?)\.rb$/)
33:                         load_entry entry
34:                     end
35:                 end
36: 
37:                 require_libs
38:             end

[Source]

    # File lib/mcollective/vendor.rb, line 26
26:             def require_libs
27:                 require 'mcollective/vendor/require_vendored'
28:             end

[Source]

    # File lib/mcollective/vendor.rb, line 17
17:             def vendor_dir
18:                 File.join([File.dirname(File.expand_path(__FILE__)), "vendor"])
19:             end

[Validate]