runnable 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. data/README.markdown +16 -18
  2. data/VERSION +1 -1
  3. data/lib/runnable.rb +19 -13
  4. data/runnable.gemspec +61 -0
  5. metadata +22 -32
data/README.markdown CHANGED
@@ -24,32 +24,30 @@ documentation of this gem can be generated using ```yardoc```. To do this use
24
24
  ```rake doc```.
25
25
 
26
26
  ## Return values
27
- Runnable uses another gems called ```Publisher```. It allow Runnable to fire
28
- events that can be processed or ignored. When a command ends its execution,
29
- Runnable always fire and event: ```:finish``` if commands finalized in a correct way
30
- or ```:fail``` if an error ocurred. In case something went wrong and a ```:fail```
31
- events was fired, Runnable also provide an array containing the command return
32
- value as the parameter of a SystemCallError exception and optionally others
33
- exceptions ocurred at runtime.
27
+ Runnable has two special methods which are called at the end of a command execution.
28
+ ```:finish``` if commands finalized in a correct way and ```:fail``` if an error
29
+ ocurred. In case something went wrong and a ```:fail``` method is called, Runnable
30
+ also provide an array containing the command return value as the parameter of a
31
+ SystemCallError exception and optionally others exceptions ocurred at runtime.
34
32
 
35
- This is an example of how can we receive the return value of a command:
33
+ This is an example of how we can receive the return value of a command:
36
34
 
37
35
  class LS < Runnable
38
- end
39
-
40
- my_command = LS.new
41
36
 
42
- my_command.when :finish do
43
- puts "Everything went better than expected :)"
44
- end
37
+ def finish
38
+ puts "Everything went better than expected :)"
39
+ end
45
40
 
46
- my_command.when :fail do |exceptions|
47
- puts "Something went wrong"
48
- exceptions.each do |exception|
49
- puts exception.message
41
+ def failed( exceptions )
42
+ puts "Something went wrong :("
43
+ exceptions.each do |exception|
44
+ puts exception.message
45
+ end
50
46
  end
47
+
51
48
  end
52
49
 
50
+ my_command = LS.new
53
51
  my_command.run
54
52
 
55
53
  ## Custom exceptions
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.2.0
data/lib/runnable.rb CHANGED
@@ -19,8 +19,6 @@
19
19
  require 'runnable/gnu'
20
20
  require 'runnable/extended'
21
21
 
22
- require 'publisher'
23
-
24
22
  # Convert a executable command in a Ruby-like class
25
23
  # you are able to start, define params and send signals (like kill, or stop)
26
24
  #
@@ -32,12 +30,7 @@ require 'publisher'
32
30
  # ls = LS.new
33
31
  # ls.alh
34
32
  # ls.run
35
- class Runnable
36
- extend Publisher
37
-
38
- # Fires to know whats happening inside
39
- can_fire :fail, :finish
40
-
33
+ class Runnable
41
34
  # Process id.
42
35
  attr_reader :pid
43
36
  # Process owner.
@@ -127,8 +120,6 @@ class Runnable
127
120
 
128
121
  # Start the execution of the command.
129
122
  # @return [nil]
130
- # @fire :finish
131
- # @fire :fail
132
123
  def run
133
124
  # Create a new mutex
134
125
  @pid_mutex = Mutex.new
@@ -172,11 +163,11 @@ class Runnable
172
163
  # In case of error add an Exception to the @excep_array
173
164
  @excep_array << SystemCallError.new( exit_status ) if exit_status != 0
174
165
 
175
- # Fire signals according to the exit code
166
+ # Call methods according to the exit code
176
167
  if @excep_array.empty?
177
- fire :finish
168
+ finish
178
169
  else
179
- fire :fail, @excep_array
170
+ failed( @excep_array )
180
171
  end
181
172
 
182
173
  # This instance is finished and we remove it
@@ -343,6 +334,21 @@ class Runnable
343
334
  {}
344
335
  end
345
336
 
337
+ # @abstract
338
+ # Method called when command ends with no erros.
339
+ # This method is a hook so it should be overwritten in child classes.
340
+ # @return [nil]
341
+ def finish
342
+ end
343
+
344
+ # @abstract
345
+ # Method called when command executions fail.
346
+ # This method is a hook so it should be overwritten in child classes.
347
+ # @param [Array] exceptions Array containing exceptions raised during the command execution.
348
+ # @return [nil]
349
+ def failed( exceptions )
350
+ end
351
+
346
352
  protected
347
353
 
348
354
  # Send the desired signal to the command.
data/runnable.gemspec ADDED
@@ -0,0 +1,61 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{runnable}
8
+ s.version = "0.2.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Rafael García", "Luis Ciudad", "Pedro Navajas", "Javier Aranda"]
12
+ s.date = %q{2011-08-03}
13
+ s.description = %q{Convert a executable command in a Ruby-like class you are able to start, define params and send signals (like kill, or stop)}
14
+ s.email = ["rgarcia@nosolosoftware.biz", "lciudad@nosolosoftware.biz", "pnavajas@nosolosoftware.biz", "jaranda@nosolosoftware.biz"]
15
+ s.extra_rdoc_files = [
16
+ "README.markdown"
17
+ ]
18
+ s.files = [
19
+ "COPYING",
20
+ "README.markdown",
21
+ "VERSION",
22
+ "lib/runnable.rb",
23
+ "lib/runnable/command_parser.rb",
24
+ "lib/runnable/extended.rb",
25
+ "lib/runnable/gnu.rb",
26
+ "runnable.gemspec"
27
+ ]
28
+ s.homepage = %q{http://github.com/nosolosoftware/runnable}
29
+ s.licenses = ["GPL-3"]
30
+ s.require_paths = ["lib"]
31
+ s.rubygems_version = %q{1.7.2}
32
+ s.summary = %q{A Ruby gem for execute and control system commands}
33
+
34
+ if s.respond_to? :specification_version then
35
+ s.specification_version = 3
36
+
37
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
38
+ s.add_development_dependency(%q<rake>, [">= 0.8.7"])
39
+ s.add_development_dependency(%q<yard>, [">= 0.6.8"])
40
+ s.add_development_dependency(%q<rspec>, [">= 2.5.0"])
41
+ s.add_development_dependency(%q<cucumber>, [">= 0.10.2"])
42
+ s.add_development_dependency(%q<jeweler>, [">= 1.6.0"])
43
+ s.add_development_dependency(%q<bluecloth>, [">= 2.1.0"])
44
+ else
45
+ s.add_dependency(%q<rake>, [">= 0.8.7"])
46
+ s.add_dependency(%q<yard>, [">= 0.6.8"])
47
+ s.add_dependency(%q<rspec>, [">= 2.5.0"])
48
+ s.add_dependency(%q<cucumber>, [">= 0.10.2"])
49
+ s.add_dependency(%q<jeweler>, [">= 1.6.0"])
50
+ s.add_dependency(%q<bluecloth>, [">= 2.1.0"])
51
+ end
52
+ else
53
+ s.add_dependency(%q<rake>, [">= 0.8.7"])
54
+ s.add_dependency(%q<yard>, [">= 0.6.8"])
55
+ s.add_dependency(%q<rspec>, [">= 2.5.0"])
56
+ s.add_dependency(%q<cucumber>, [">= 0.10.2"])
57
+ s.add_dependency(%q<jeweler>, [">= 1.6.0"])
58
+ s.add_dependency(%q<bluecloth>, [">= 2.1.0"])
59
+ end
60
+ end
61
+
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: runnable
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.2
5
+ version: 0.2.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - "Rafael Garc\xC3\xADa"
@@ -13,85 +13,74 @@ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
15
 
16
- date: 2011-05-09 00:00:00 Z
16
+ date: 2011-08-03 00:00:00 Z
17
17
  dependencies:
18
- - !ruby/object:Gem::Dependency
19
- name: publisher
20
- requirement: &id001 !ruby/object:Gem::Requirement
21
- none: false
22
- requirements:
23
- - - ~>
24
- - !ruby/object:Gem::Version
25
- version: 1.1.1
26
- type: :runtime
27
- prerelease: false
28
- version_requirements: *id001
29
18
  - !ruby/object:Gem::Dependency
30
19
  name: rake
31
- requirement: &id002 !ruby/object:Gem::Requirement
20
+ requirement: &id001 !ruby/object:Gem::Requirement
32
21
  none: false
33
22
  requirements:
34
- - - ~>
23
+ - - ">="
35
24
  - !ruby/object:Gem::Version
36
25
  version: 0.8.7
37
26
  type: :development
38
27
  prerelease: false
39
- version_requirements: *id002
28
+ version_requirements: *id001
40
29
  - !ruby/object:Gem::Dependency
41
30
  name: yard
42
- requirement: &id003 !ruby/object:Gem::Requirement
31
+ requirement: &id002 !ruby/object:Gem::Requirement
43
32
  none: false
44
33
  requirements:
45
- - - ~>
34
+ - - ">="
46
35
  - !ruby/object:Gem::Version
47
36
  version: 0.6.8
48
37
  type: :development
49
38
  prerelease: false
50
- version_requirements: *id003
39
+ version_requirements: *id002
51
40
  - !ruby/object:Gem::Dependency
52
41
  name: rspec
53
- requirement: &id004 !ruby/object:Gem::Requirement
42
+ requirement: &id003 !ruby/object:Gem::Requirement
54
43
  none: false
55
44
  requirements:
56
- - - ~>
45
+ - - ">="
57
46
  - !ruby/object:Gem::Version
58
47
  version: 2.5.0
59
48
  type: :development
60
49
  prerelease: false
61
- version_requirements: *id004
50
+ version_requirements: *id003
62
51
  - !ruby/object:Gem::Dependency
63
52
  name: cucumber
64
- requirement: &id005 !ruby/object:Gem::Requirement
53
+ requirement: &id004 !ruby/object:Gem::Requirement
65
54
  none: false
66
55
  requirements:
67
- - - ~>
56
+ - - ">="
68
57
  - !ruby/object:Gem::Version
69
58
  version: 0.10.2
70
59
  type: :development
71
60
  prerelease: false
72
- version_requirements: *id005
61
+ version_requirements: *id004
73
62
  - !ruby/object:Gem::Dependency
74
63
  name: jeweler
75
- requirement: &id006 !ruby/object:Gem::Requirement
64
+ requirement: &id005 !ruby/object:Gem::Requirement
76
65
  none: false
77
66
  requirements:
78
- - - ~>
67
+ - - ">="
79
68
  - !ruby/object:Gem::Version
80
69
  version: 1.6.0
81
70
  type: :development
82
71
  prerelease: false
83
- version_requirements: *id006
72
+ version_requirements: *id005
84
73
  - !ruby/object:Gem::Dependency
85
74
  name: bluecloth
86
- requirement: &id007 !ruby/object:Gem::Requirement
75
+ requirement: &id006 !ruby/object:Gem::Requirement
87
76
  none: false
88
77
  requirements:
89
- - - ~>
78
+ - - ">="
90
79
  - !ruby/object:Gem::Version
91
80
  version: 2.1.0
92
81
  type: :development
93
82
  prerelease: false
94
- version_requirements: *id007
83
+ version_requirements: *id006
95
84
  description: Convert a executable command in a Ruby-like class you are able to start, define params and send signals (like kill, or stop)
96
85
  email:
97
86
  - rgarcia@nosolosoftware.biz
@@ -112,6 +101,7 @@ files:
112
101
  - lib/runnable/command_parser.rb
113
102
  - lib/runnable/extended.rb
114
103
  - lib/runnable/gnu.rb
104
+ - runnable.gemspec
115
105
  homepage: http://github.com/nosolosoftware/runnable
116
106
  licenses:
117
107
  - GPL-3
@@ -125,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
115
  requirements:
126
116
  - - ">="
127
117
  - !ruby/object:Gem::Version
128
- hash: 2247934159745161744
118
+ hash: -4434214219882422992
129
119
  segments:
130
120
  - 0
131
121
  version: "0"