Class: Vagrant::Plugin
- Inherits:
-
Object
- Object
- Vagrant::Plugin
- Defined in:
- lib/vagrant/plugin.rb
Overview
Represents a single plugin and also manages loading plugins from
RubyGems. If a plugin has a vagrant_init.rb
file somewhere on its
load path, then this class will find it and load it. For logging purposes
(for debugging), the list of loaded plugins is stored in the Plugin.plugins
array.
Constant Summary collapse
- @@plugins =
The array of loaded plugins.
[]
Instance Attribute Summary collapse
-
#file ⇒ Object
readonly
The path to the
vagrant_init.rb
file which was loaded for this plugin. -
#gemspec ⇒ Object
readonly
The gemspec of this plugin.
Class Method Summary collapse
-
.load! ⇒ Object
Loads all the plugins for Vagrant.
-
.plugins ⇒ Array
Returns the array of plugins which are currently loaded by Vagrant.
Instance Method Summary collapse
-
#initialize(spec, file) ⇒ Plugin
constructor
Initializes a new plugin, given a Gemspec and the path to the gem's
vagrant_init.rb
file.
Constructor Details
#initialize(spec, file) ⇒ Plugin
Initializes a new plugin, given a Gemspec and the path to the
gem's vagrant_init.rb
file. This should never be called manually.
Instead load! creates all the instances.
50 51 52 53 54 55 |
# File 'lib/vagrant/plugin.rb', line 50 def initialize(spec, file) @gemspec = spec @file = file load file end |
Instance Attribute Details
#file ⇒ Object (readonly)
The path to the vagrant_init.rb
file which was loaded for this plugin.
17 18 19 |
# File 'lib/vagrant/plugin.rb', line 17 def file @file end |
#gemspec ⇒ Object (readonly)
The gemspec of this plugin. This is an actual gemspec object.
14 15 16 |
# File 'lib/vagrant/plugin.rb', line 14 def gemspec @gemspec end |
Class Method Details
.load! ⇒ Object
Loads all the plugins for Vagrant. Plugins are currently gems which have a "vagrant_init.rb" somewhere on their load path. This file is loaded to kick off the load sequence for that plugin.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/vagrant/plugin.rb', line 23 def self.load! # Stupid hack since Rails 2.3.x overrides Gem.source_index with their # own incomplete replacement which causes issues. index = Gem.source_index index = [index.installed_source_index, index.vendor_source_index] if defined?(Rails::VendorGemSourceIndex) && index.is_a?(Rails::VendorGemSourceIndex) # Look for a vagrant_init.rb in all the gems, but only the # latest version of the gems. [index].flatten.each do |source| source.latest_specs.each do |spec| file = Gem.searcher.matching_files(spec, "vagrant_init.rb").first next if !file @@plugins << new(spec, file) end end end |
.plugins ⇒ Array
Returns the array of plugins which are currently loaded by Vagrant.
45 |
# File 'lib/vagrant/plugin.rb', line 45 def self.plugins; @@plugins; end |