class Sprinkle::Verify
Verify
Blocks¶ ↑
As documented in Sprinkle::Package
, you may define a block on a package which verifies that a package was installed correctly. If this verification block fails, Sprinkle
will stop the script gracefully, raising the error.
In addition to checking post install if it was successfully, verification blocks are also run before an install to see if a package is already installed. If this is the case, the package is skipped and Sprinkle
continues with the next package. This behavior can be overriden by setting the -f flag on the sprinkle script or setting Sprinkle::OPTIONS to true if you're using sprinkle programmatically.
An Example¶ ↑
The following verifies that rails was installed correctly be checking to see if the 'rails' command is available on the command line:
package :rails do gem 'rails' verify do has_executable 'rails' end end
Available Verifiers
¶ ↑
There are a variety of available methods for use in the verification block. The standard methods are defined in the Sprinkle::Verifiers
module, so see their corresponding documentation.
Custom Verifiers
¶ ↑
If you feel that the built-in verifiers do not offer a certain aspect of verification which you need, you may create your own verifier! Simply wrap any method in a module which you want to use:
module MagicBeansVerifier def has_magic_beans(sauce) @commands << '[ -z "`echo $' + sauce + '`"]' end end
The method can append as many commands as it wishes to the @commands array. These commands will be run on the remote server and MUST give an exit status of 0 if successful or other if unsuccessful.
To register your verifier, call the register method on Sprinkle::Verify:
Sprinkle::Verify.register(MagicBeansVerifier)
And now you may use it like any other verifier:
package :magic_beans do gem 'magic_beans' verify { has_magic_beans('ranch') } end
Public Class Methods
Register a verification module
# File lib/sprinkle/verify.rb, line 74 def register(new_module) class_eval { include new_module } end
Public Instance Methods
# File lib/sprinkle/verify.rb, line 93 def commands prepare @commands end
# File lib/sprinkle/verify.rb, line 98 def prepare return if @prepared @commands = [] self.instance_eval(&@block) @prepared = true end
# File lib/sprinkle/verify.rb, line 105 def runner(*cmds) ActiveSupport::Deprecation.warn "runner inside verify is depreciated and will removed in the future\n" + "use runs_without_error instead." runs_without_error(*cmds) end
# File lib/sprinkle/verify.rb, line 112 def runs_without_error(*cmds) @commands += cmds end