Module: PoolParty::DefinableResource
- Included in:
- Object
- Defined in:
- lib/poolparty/modules/definable_resource.rb
Instance Method Summary collapse
-
#define_resource(name, &block) ⇒ Object
Define a new resource that can be called like any other resource Similar to any other resource (like file or exec) but you define it how you want it to work Example:.
-
#virtual_resource(name = :virtual_resource, opts = {}, &block) ⇒ Object
Allow us to create virtual resources Generally, in plugins This sets a virtual resource against the Resource class Example:.
Instance Method Details
#define_resource(name, &block) ⇒ Object
Define a new resource that can be called like any other resource Similar to any other resource (like file or exec) but you define it how you want it to work Example:
define_resource(:line_in_file) do end
Within the block, you can define any methods you want to run as part of the resource
One thing to note is that this is NOT like other resources in the sense that it does not give you any extra methods like the resources do
For example usage, see lib/poolparty/plugins/line.rb
18 19 20 |
# File 'lib/poolparty/modules/definable_resource.rb', line 18 def define_resource(name, &block) name.to_s.new_resource_class &block end |
#virtual_resource(name = :virtual_resource, opts = {}, &block) ⇒ Object
Allow us to create virtual resources Generally, in plugins This sets a virtual resource against the Resource class Example:
virtual_resource(:virtualhost) do
end
This defines a virtualhost as a virtual resource
and consequently gives the methods has_virtualhost and does_not_have_virtualhost
Note that you can define any resources within the virtual resource within the definition or the call. Call example: has_virtualhost do
name "xnot.org"
end
Which sets the virtual host’s name as xnot.org
An example is included in the poolparty-apache-plugin
43 44 45 46 47 48 49 50 51 |
# File 'lib/poolparty/modules/definable_resource.rb', line 43 def virtual_resource(name=:virtual_resource, opts={}, &block) symc = "#{name}".top_level_class.camelcase klass = symc.class_constant(PoolParty::Plugin::Plugin, {:preserve => true}, &block) PoolParty::Service.add_has_and_does_not_have_methods_for(symc) klass.module_eval &block if block klass end |