Class: MCollective::Vendor
- Inherits:
-
Object
- Object
- MCollective::Vendor
- 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_vendored ⇒ Object
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_libs ⇒ Object
26 27 28 |
# File 'lib/mcollective/vendor.rb', line 26 def require_libs require 'mcollective/vendor/require_vendored' end |
.vendor_dir ⇒ Object
17 18 19 |
# File 'lib/mcollective/vendor.rb', line 17 def vendor_dir File.join([File.dirname(File.(__FILE__)), "vendor"]) end |