de78a3637a
Vagrant is only guaranteeing that the plugin definition superclass (the Vagrant.plugin("1") part) is backwards compatible. Anything else, such as Vagrant::Command::Base and so on, will likely change in future versions. Beacuse of this, plugins should only immediately expose their definition. In order to support loading the other classes, plugins should defer loading to the "activation" phase of a plugin. This can be done using the `activated` block: class MyPlugin < Vagrant.plugin("1") name "my plugin" activated do require "myplugin/my_command" end command("foo") { MyCommand } end Plugin activation is done at two specific times: * Right when a Vagrant::Environment is created and the global plugins (such as from ~.vagrantrc) are loaded. * Right before loading configuration, but after the Vagrantfiles have been evaluated. This allows plugins to be defined within these files as well. |
||
---|---|---|
.. | ||
vagrant | ||
vagrant.rb |