auser-sprinkle 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,17 @@
1
1
  module Sprinkle
2
2
  module Verifiers
3
+ # = File Verifier
4
+ #
5
+ # Contains a verifier to check the existance of a file.
6
+ #
7
+ # == Example Usage
8
+ #
9
+ # verify { has_file '/etc/apache2/apache2.conf' }
10
+ #
3
11
  module File
4
12
  Sprinkle::Verify.register(Sprinkle::Verifiers::File)
5
13
 
14
+ # Checks to make sure <tt>path</tt> is a file on the remote server.
6
15
  def has_file(path)
7
16
  @commands << "test -f #{path}"
8
17
  end
@@ -0,0 +1,21 @@
1
+ module Sprinkle
2
+ module Verifiers
3
+ # = Process Verifier
4
+ #
5
+ # Contains a verifier to check that a process is running.
6
+ #
7
+ # == Example Usage
8
+ #
9
+ # verify { has_process 'httpd' }
10
+ #
11
+ module Process
12
+ Sprinkle::Verify.register(Sprinkle::Verifiers::Process)
13
+
14
+ # Checks to make sure <tt>process</tt> is a process running
15
+ # on the remote server.
16
+ def has_process(process)
17
+ @commands << "ps aux | grep '#{process}' | grep -v grep"
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ module Sprinkle
2
+ module Verifiers
3
+ # = Ruby Verifiers
4
+ #
5
+ # The verifiers in this module are ruby specific.
6
+ module Ruby
7
+ Sprinkle::Verify.register(Sprinkle::Verifiers::Ruby)
8
+
9
+ # Checks if ruby can require the <tt>files</tt> given. <tt>rubygems</tt>
10
+ # is always included first.
11
+ def ruby_can_load(*files)
12
+ # Always include rubygems first
13
+ files = files.unshift('rubygems').collect { |x| "require '#{x}'" }
14
+
15
+ @commands << "ruby -e \"#{files.join(';')}\""
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,8 +1,23 @@
1
1
  module Sprinkle
2
2
  module Verifiers
3
+ # = Symlink Verifier
4
+ #
5
+ # Contains a verifier to check the existance of a symbolic link.
6
+ #
7
+ # == Example Usage
8
+ #
9
+ # First, checking for the existence of a symlink:
10
+ #
11
+ # verify { has_symlink '/usr/special/secret/pointer' }
12
+ #
13
+ # Second, checking that the symlink points to a specific place:
14
+ #
15
+ # verify { has_symlink '/usr/special/secret/pointer', '/usr/local/realfile' }
3
16
  module Symlink
4
17
  Sprinkle::Verify.register(Sprinkle::Verifiers::Symlink)
5
18
 
19
+ # Checks that <tt>symlink</tt> is a symbolic link. If <tt>file</tt> is
20
+ # given, it checks that <tt>symlink</tt> points to <tt>file</tt>
6
21
  def has_symlink(symlink, file = nil)
7
22
  if file.nil?
8
23
  @commands << "test -L #{symlink}"
@@ -1,7 +1,66 @@
1
1
  module Sprinkle
2
+ # = Verification Methods
3
+ #
4
+ # As documented in Sprinkle::Package, you may define a block on a package
5
+ # which verifies that a package was installed correctly. If this verification
6
+ # block fails, Sprinkle will stop the script gracefully, raising the error.
7
+ #
8
+ # In addition to checking post install if it was successfully, verification
9
+ # blocks are also ran before an install to see if a package is <em>already</em>
10
+ # installed. If this is the case, the package is skipped and Sprinkle continues
11
+ # with the next package. This behavior can be overriden by setting the -f flag on
12
+ # the sprinkle script or setting Sprinkle::OPTIONS[:force] to true if you're
13
+ # using sprinkle programmatically.
14
+ #
15
+ # == An Example
16
+ #
17
+ # The following verifies that rails was installed correctly be checking to see
18
+ # if the 'rails' command is available on the command line:
19
+ #
20
+ # package :rails do
21
+ # gem 'rails'
22
+ #
23
+ # verify do
24
+ # has_executable 'rails'
25
+ # end
26
+ # end
27
+ #
28
+ # == Available Verifiers
29
+ #
30
+ # There are a variety of available methods for use in the verification block.
31
+ # The standard methods are defined in the Sprinkle::Verifiers module, so see
32
+ # their corresponding documentation.
33
+ #
34
+ # == Custom Verifiers
35
+ #
36
+ # If you feel that the built-in verifiers do not offer a certain aspect of
37
+ # verification which you need, you may create your own verifier! Simply wrap
38
+ # any method in a module which you want to use:
39
+ #
40
+ # module MagicBeansVerifier
41
+ # def has_magic_beans(sauce)
42
+ # @commands << '[ -z "`echo $' + sauce + '`"]'
43
+ # end
44
+ # end
45
+ #
46
+ # The method can append as many commands as it wishes to the @commands array.
47
+ # These commands will be run on the remote server and <b>MUST</b> give an
48
+ # exit status of 0 if successful or other if unsuccessful.
49
+ #
50
+ # To register your verifier, call the register method on Sprinkle::Verify:
51
+ #
52
+ # Sprinle::Verify.register(MagicBeansVerifier)
53
+ #
54
+ # And now you may use it like any other verifier:
55
+ #
56
+ # package :magic_beans do
57
+ # gem 'magic_beans'
58
+ #
59
+ # verify { has_magic_beans('ranch') }
60
+ # end
2
61
  class Verify
3
62
  include Sprinkle::Configurable
4
- attr_accessor :package, :description, :commands
63
+ attr_accessor :package, :description, :commands #:nodoc:
5
64
 
6
65
  class <<self
7
66
  # Register a verification module
@@ -10,7 +69,7 @@ module Sprinkle
10
69
  end
11
70
  end
12
71
 
13
- def initialize(package, description = '', &block)
72
+ def initialize(package, description = '', &block) #:nodoc:
14
73
  raise 'Verify requires a block.' unless block
15
74
 
16
75
  @package = package
@@ -22,7 +81,7 @@ module Sprinkle
22
81
  self.instance_eval(&block)
23
82
  end
24
83
 
25
- def process(roles, pre = false)
84
+ def process(roles, pre = false) #:nodoc:
26
85
  assert_delivery
27
86
 
28
87
  description = @description.empty? ? @package.name : @description
@@ -42,7 +101,7 @@ module Sprinkle
42
101
  end
43
102
  end
44
103
 
45
- class VerificationFailed < Exception
104
+ class VerificationFailed < Exception #:nodoc:
46
105
  attr_accessor :package, :description
47
106
 
48
107
  def initialize(package, description)
@@ -2,7 +2,7 @@ module Sprinkle #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- TINY = 5
5
+ TINY = 6
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -23,6 +23,12 @@ describe Sprinkle::Verify do
23
23
 
24
24
  # Check if a global executable exists (in PATH)
25
25
  has_executable 'rails'
26
+
27
+ # Check for a process
28
+ has_process 'httpd'
29
+
30
+ # Check that ruby can include files
31
+ ruby_can_load 'a', 'b', 'c'
26
32
  end
27
33
  end
28
34
  @verification = @package.verifications[0]
@@ -58,7 +64,15 @@ describe Sprinkle::Verify do
58
64
  end
59
65
 
60
66
  it 'should test the "which" command to look for a global executable' do
61
- @verification.commands.should include('[ -n "`which rails`"]')
67
+ @verification.commands.should include('[ -n "`echo \`which rails\``" ]')
68
+ end
69
+
70
+ it 'should test the process list to find a process' do
71
+ @verification.commands.should include("ps aux | grep 'httpd' | grep -v grep")
72
+ end
73
+
74
+ it 'should check if ruby can include a, b, c' do
75
+ @verification.commands.should include("ruby -e \"require 'rubygems';require 'a';require 'b';require 'c'\"")
62
76
  end
63
77
  end
64
78
 
@@ -1,16 +1,16 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{sprinkle}
3
- s.version = "0.1.5"
3
+ s.version = "0.1.6"
4
4
 
5
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
- s.authors = ["Marcus Crafter"]
7
- s.date = %q{2008-07-16}
6
+ s.authors = ["Marcus Crafter", "Mitchell Hashimoto"]
7
+ s.date = %q{2008-07-19}
8
8
  s.default_executable = %q{sprinkle}
9
9
  s.description = %q{Ruby DSL based software provisioning tool}
10
- s.email = ["crafterm@redartisan.com"]
10
+ s.email = ["crafterm@redartisan.com", "mitchell.hashimoto@citrusbyte.com"]
11
11
  s.executables = ["sprinkle"]
12
- s.extra_rdoc_files = ["History.txt", "Manifest.txt"]
13
- s.files = ["CREDITS", "History.txt", "MIT-LICENSE", "Manifest.txt", "README.rdoc", "Rakefile", "bin/sprinkle", "config/hoe.rb", "config/requirements.rb", "examples/merb/deploy.rb", "examples/rails/README", "examples/rails/deploy.rb", "examples/rails/packages/database.rb", "examples/rails/packages/essential.rb", "examples/rails/packages/rails.rb", "examples/rails/packages/search.rb", "examples/rails/packages/server.rb", "examples/rails/rails.rb", "examples/sprinkle/sprinkle.rb", "lib/sprinkle.rb", "lib/sprinkle/actors/capistrano.rb", "lib/sprinkle/actors/vlad.rb", "lib/sprinkle/configurable.rb", "lib/sprinkle/deployment.rb", "lib/sprinkle/extensions/arbitrary_options.rb", "lib/sprinkle/extensions/array.rb", "lib/sprinkle/extensions/blank_slate.rb", "lib/sprinkle/extensions/dsl_accessor.rb", "lib/sprinkle/extensions/string.rb", "lib/sprinkle/extensions/symbol.rb", "lib/sprinkle/installers/apt.rb", "lib/sprinkle/installers/gem.rb", "lib/sprinkle/installers/installer.rb", "lib/sprinkle/installers/rake.rb", "lib/sprinkle/installers/rpm.rb", "lib/sprinkle/installers/source.rb", "lib/sprinkle/package.rb", "lib/sprinkle/policy.rb", "lib/sprinkle/script.rb", "lib/sprinkle/verifiers/directory.rb", "lib/sprinkle/verifiers/executable.rb", "lib/sprinkle/verifiers/file.rb", "lib/sprinkle/verifiers/symlink.rb", "lib/sprinkle/verify.rb", "lib/sprinkle/version.rb", "script/destroy", "script/generate", "spec/spec.opts", "spec/spec_helper.rb", "spec/sprinkle/actors/capistrano_spec.rb", "spec/sprinkle/configurable_spec.rb", "spec/sprinkle/deployment_spec.rb", "spec/sprinkle/extensions/array_spec.rb", "spec/sprinkle/extensions/string_spec.rb", "spec/sprinkle/installers/apt_spec.rb", "spec/sprinkle/installers/gem_spec.rb", "spec/sprinkle/installers/installer_spec.rb", "spec/sprinkle/installers/rpm_spec.rb", "spec/sprinkle/installers/source_spec.rb", "spec/sprinkle/package_spec.rb", "spec/sprinkle/policy_spec.rb", "spec/sprinkle/script_spec.rb", "spec/sprinkle/sprinkle_spec.rb", "spec/sprinkle/verify_spec.rb", "sprinkle.gemspec", "tasks/deployment.rake", "tasks/environment.rake", "tasks/rspec.rake"]
12
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
13
+ s.files = ["CREDITS", "History.txt", "MIT-LICENSE", "Manifest.txt", "README.txt", "Rakefile", "bin/sprinkle", "config/hoe.rb", "config/requirements.rb", "examples/rails/README", "examples/rails/deploy.rb", "examples/rails/packages/database.rb", "examples/rails/packages/essential.rb", "examples/rails/packages/rails.rb", "examples/rails/packages/search.rb", "examples/rails/packages/server.rb", "examples/rails/rails.rb", "examples/sprinkle/sprinkle.rb", "lib/sprinkle.rb", "lib/sprinkle/actors/actors.rb", "lib/sprinkle/actors/capistrano.rb", "lib/sprinkle/actors/vlad.rb", "lib/sprinkle/configurable.rb", "lib/sprinkle/deployment.rb", "lib/sprinkle/extensions/arbitrary_options.rb", "lib/sprinkle/extensions/array.rb", "lib/sprinkle/extensions/blank_slate.rb", "lib/sprinkle/extensions/dsl_accessor.rb", "lib/sprinkle/extensions/string.rb", "lib/sprinkle/extensions/symbol.rb", "lib/sprinkle/installers/apt.rb", "lib/sprinkle/installers/gem.rb", "lib/sprinkle/installers/installer.rb", "lib/sprinkle/installers/rake.rb", "lib/sprinkle/installers/rpm.rb", "lib/sprinkle/installers/source.rb", "lib/sprinkle/package.rb", "lib/sprinkle/policy.rb", "lib/sprinkle/script.rb", "lib/sprinkle/verifiers/directory.rb", "lib/sprinkle/verifiers/executable.rb", "lib/sprinkle/verifiers/file.rb", "lib/sprinkle/verifiers/process.rb", "lib/sprinkle/verifiers/ruby.rb", "lib/sprinkle/verifiers/symlink.rb", "lib/sprinkle/verify.rb", "lib/sprinkle/version.rb", "script/destroy", "script/generate", "spec/spec.opts", "spec/spec_helper.rb", "spec/sprinkle/actors/capistrano_spec.rb", "spec/sprinkle/configurable_spec.rb", "spec/sprinkle/deployment_spec.rb", "spec/sprinkle/extensions/array_spec.rb", "spec/sprinkle/extensions/string_spec.rb", "spec/sprinkle/installers/apt_spec.rb", "spec/sprinkle/installers/gem_spec.rb", "spec/sprinkle/installers/installer_spec.rb", "spec/sprinkle/installers/rpm_spec.rb", "spec/sprinkle/installers/source_spec.rb", "spec/sprinkle/package_spec.rb", "spec/sprinkle/policy_spec.rb", "spec/sprinkle/script_spec.rb", "spec/sprinkle/sprinkle_spec.rb", "spec/sprinkle/verify_spec.rb", "sprinkle.gemspec", "tasks/deployment.rake", "tasks/environment.rake", "tasks/rspec.rake"]
14
14
  s.has_rdoc = true
15
15
  s.homepage = %q{http://sprinkle.rubyforge.org}
16
16
  s.rdoc_options = ["--main", "README.txt"]
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auser-sprinkle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcus Crafter
8
+ - Mitchell Hashimoto
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
12
 
12
- date: 2008-07-16 00:00:00 -07:00
13
+ date: 2008-07-19 00:00:00 -07:00
13
14
  default_executable: sprinkle
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
@@ -51,6 +52,7 @@ dependencies:
51
52
  description: Ruby DSL based software provisioning tool
52
53
  email:
53
54
  - crafterm@redartisan.com
55
+ - mitchell.hashimoto@citrusbyte.com
54
56
  executables:
55
57
  - sprinkle
56
58
  extensions: []
@@ -58,17 +60,17 @@ extensions: []
58
60
  extra_rdoc_files:
59
61
  - History.txt
60
62
  - Manifest.txt
63
+ - README.txt
61
64
  files:
62
65
  - CREDITS
63
66
  - History.txt
64
67
  - MIT-LICENSE
65
68
  - Manifest.txt
66
- - README.rdoc
69
+ - README.txt
67
70
  - Rakefile
68
71
  - bin/sprinkle
69
72
  - config/hoe.rb
70
73
  - config/requirements.rb
71
- - examples/merb/deploy.rb
72
74
  - examples/rails/README
73
75
  - examples/rails/deploy.rb
74
76
  - examples/rails/packages/database.rb
@@ -79,6 +81,7 @@ files:
79
81
  - examples/rails/rails.rb
80
82
  - examples/sprinkle/sprinkle.rb
81
83
  - lib/sprinkle.rb
84
+ - lib/sprinkle/actors/actors.rb
82
85
  - lib/sprinkle/actors/capistrano.rb
83
86
  - lib/sprinkle/actors/vlad.rb
84
87
  - lib/sprinkle/configurable.rb
@@ -101,6 +104,8 @@ files:
101
104
  - lib/sprinkle/verifiers/directory.rb
102
105
  - lib/sprinkle/verifiers/executable.rb
103
106
  - lib/sprinkle/verifiers/file.rb
107
+ - lib/sprinkle/verifiers/process.rb
108
+ - lib/sprinkle/verifiers/ruby.rb
104
109
  - lib/sprinkle/verifiers/symlink.rb
105
110
  - lib/sprinkle/verify.rb
106
111
  - lib/sprinkle/version.rb
@@ -1,5 +0,0 @@
1
- set :application, "application"
2
-
3
- role :app, "yourhost.com"
4
- role :web, "yourhost.com"
5
- role :db, "yourhost.com", :primary => true