doable 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +24 -2
  3. data/lib/doable/job.rb +2 -2
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ae66f67c0262597b37425580b07c0bad85c71621
4
- data.tar.gz: 45ad1f5d2df72887db40ec4c441591b5ff02fe02
3
+ metadata.gz: 354051228fd6d5c41f7f79f8b75b171139549b2a
4
+ data.tar.gz: 914dae4667be4a6ef4f06d6a4633a31b9943c19a
5
5
  SHA512:
6
- metadata.gz: 36b6cff4e14a55d0e0f35a50aef0a7935c36c973ae5e5637270191b75254db61839706718543a356c9aa15eb529b8bbf33af061bd110e67ff1627014e199b977
7
- data.tar.gz: a56729ec3909eb736ce770aae53dd97582bf8ddfb4418bcbb3790aab8e4eddc77f215f9f04c2c35323f6cec05fbc4bdac5bed9c9076b2df3f02a1063b98fff58
6
+ metadata.gz: de16e3550956ae75ec4f4d1a8a25870667ea89157fc1fb01300a62fcd121de6e7153d243358ecf9f8751da85ca29fa9175a008dd88b529a2d79309c45df3fe16
7
+ data.tar.gz: 8c3d29bdcf1330c17fc07d139a1a434b7cf71497d11df9de8cf577479660fe6bac93dbe8ad925f91215e48c9f1663e8eecd3dbd1b8254a2774011032fa4c41c6
data/README.md CHANGED
@@ -98,11 +98,13 @@ Here is an example job:
98
98
  check_disk_space @app_dir, (500 * 1024 * 1024)
99
99
  }
100
100
 
101
+ # Create our user
101
102
  j.step {
102
103
  @user = "cooluser"
103
104
  find_or_create_user @user, File.dirname(@app_dir)
104
105
  }
105
106
 
107
+ # Unpack our software, and define a way to rollback this step
106
108
  j.step {
107
109
  find_or_create_directory @app_dir
108
110
 
@@ -115,18 +117,38 @@ Here is an example job:
115
117
  remove(@app_dir)
116
118
  }
117
119
 
120
+ # Rnn the software as our user
118
121
  j.step {
119
122
  run_as_user @user, File.join(@app_dir, "/bin", "start.sh")
120
123
  }
121
124
  end
122
125
 
123
- job3.run
126
+ job3.run # and... go!
124
127
 
125
128
  Hopefully this demonstrates how to get access to additional helper methods. Also, you may have noticed the `rollback` method added to the step for uncompressing the tarball. If things go wrong, rollbacks can be run to revert changes. To do so, just do this:
126
129
 
127
130
  job3.rollback!
128
131
 
129
- The `Job` instance also has many other methods available for accessing its internals.
132
+ The `Job` instance also has many other methods available for accessing its internals. For instance, it is possible to query a job to determine if it is running multiple threads:
133
+
134
+ job3.multitasking?
135
+
136
+ Or queries its steps for their status and whether they were successful:
137
+
138
+ #!ruby
139
+ job3.steps.collect {|s| puts "Status: #{s.status}; Success: #{s.successful?}" }
140
+
141
+ If an individual step failed, it can be retried simply:
142
+
143
+ #!ruby
144
+ job3.steps[2].retry
145
+
146
+ It's also possible to trigger named hooks externally. Let's say we have a defined a hook called "cleanup":
147
+
148
+ #!ruby
149
+ some_job_with_hooks.trigger(:cleanup)
150
+
151
+ There are a lot of options for interacting with the internals of jobs, both within the definition of a job, and after.
130
152
 
131
153
  RubyDoc
132
154
  -------
data/lib/doable/job.rb CHANGED
@@ -73,7 +73,7 @@ module Doable
73
73
  def attempt(options = {}, &block)
74
74
  @steps << Step.new(self, options) do
75
75
  begin
76
- block.call
76
+ self.instance_exec(&block)
77
77
  rescue SkipStep => e
78
78
  raise e # We'll rescue this somewhere higher up the stack
79
79
  rescue => e
@@ -89,7 +89,7 @@ module Doable
89
89
  # @return [Step]
90
90
  def background(options = {}, &block)
91
91
  @steps << Step.new(self, options) do
92
- @threads << Thread.new { block.call }
92
+ @threads << Thread.new { self.instance_exec(&block) }
93
93
  end
94
94
  @steps.last # return the last step (the one we just defined)
95
95
  end # background()
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Gnagy