Method: Kitchen::Plugin.load
- Defined in:
- lib/kitchen/plugin.rb
.load(type, plugin, config) ⇒ Kitchen::<Module>::Base
Returns an instance of a plugin given a type, name, and config.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/kitchen/plugin.rb', line 33 def self.load(type, plugin, config) type_name = Kitchen::Util.snake_case(type.name.split("::").last) first_load = require("kitchen/#{type_name}/#{plugin}") str_const = Kitchen::Util.camel_case(plugin) klass = type.const_get(str_const) object = klass.new(config) object.verify_dependencies if first_load object rescue UserError raise rescue NameError => e raise ClientError, "Could not load the '#{plugin}' #{type_name}. Error: #{e.}" rescue LoadError => e available_plugins = plugins_available(type_name) = if available_plugins.include?(plugin) e. else " Did you mean: #{available_plugins.join(", ")} ?" \ " Please ensure that your #{type_name} is installed as a gem or included" \ " in your Gemfile if using Bundler." end raise ClientError, "Could not load the '#{plugin}' #{type_name} from the load path." + end |