eye 0.6.3 → 0.6.4

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.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- Yzg5NjVhMzljODliZWQ5OTZiOWM4NzYyMTc2YTgzYWVlOWY5MTRhYw==
5
- data.tar.gz: !binary |-
6
- MzQzY2FjY2Y3ZDllYTdjZjE0OGZhY2FhZDdkYTA2ZmE0Y2FjNzIyMg==
2
+ SHA1:
3
+ metadata.gz: 1efc0c3530c9b3015f9a7b6a536e12d9c8221189
4
+ data.tar.gz: 012ddf11788989c1d13cb1bd766d95c9a3da3fd2
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZDMzMzRhZWY3YTk1ZjA5NWVhZjljZjlhOTcwODVjNjYwM2Q1NDY3ZThjN2Vj
10
- ZDA2NWI4MDg3YmExNmRmZDMwNWQ0ZDY5MmNjYzAzMTViMmE3MjlkOTBmOTAw
11
- NWJhMjUwZjE3YzI0MTA1MDM3YTZiN2RiZDA3OGJlOTY4MjIyYTM=
12
- data.tar.gz: !binary |-
13
- NDdhNTkxM2NlMzE4NzI3ZjlmNzUxODFiYzBkZDA3OTM2Mzc2ZGRiNTU2OGQ1
14
- ZGE1YzE2OTU3NDNkZDFiODQ3YjE3YTc4OWM5YzU4M2NiMmVhNmYwMWExZTQ0
15
- ZjFjMGU5YjBiNzRjZjZiMjM4ODYwNGEwNGYyMjAzNjI2Y2RlOTI=
6
+ metadata.gz: 9b57ada510bfd95fb8402c08efc2a983b27102916e869e3e16da52faed26aa53154eec0bf685c9005dea68386b451b412b92c6190fd536449aeeaf59738aeae5
7
+ data.tar.gz: ff9c785da7173b427c7cb071d7cedc399d5698b38a8eed8810eeff9521ade37cf400359d16a3605248f4f8b6f91f9c15791ef042965045ec4732ed597303d1b7
data/.gitignore CHANGED
@@ -36,3 +36,4 @@ script
36
36
  *.tmp
37
37
  /vendor/
38
38
  *.gz
39
+ .eye
@@ -3,4 +3,5 @@ rvm:
3
3
  - "1.9.3"
4
4
  - "2.0.0"
5
5
  - "2.1"
6
+ - "2.2"
6
7
  script: bundle exec rake N=15
data/CHANGES.md CHANGED
@@ -1,3 +1,18 @@
1
+ 0.7.pre
2
+ -------
3
+ * Update Celluloid to 0.16.0
4
+
5
+ 0.6.4
6
+ -----
7
+ * leye: rename env variable EYEFILE to EYE_FILE
8
+ * leye: add options --eyefile and --eyehome #102
9
+ * leye: now store pid and sock into "DIR(eyefile)/.eye" (requires to leye quit && leye load)
10
+ * add dsl load_env method
11
+ * add trigger executing helpers :execute_sync, :execute_async
12
+ * add [triggers example](https://github.com/kostya/eye/blob/master/examples/triggers.eye)
13
+ * fix user command expand {PID} #104
14
+ * add EYE_CLIENT_TIMEOUT variable to set client timeout #99
15
+
1
16
  0.6.3
2
17
  -----
3
18
  * Add custom logger #81
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012-2014 'Konstantin Makarchev'
1
+ Copyright (c) 2012-2015 'Konstantin Makarchev'
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -205,10 +205,11 @@ Process states and events:
205
205
  [![Eye](https://raw.github.com/kostya/stuff/master/eye/mprocess.png)](https://raw.github.com/kostya/stuff/master/eye/process.png)
206
206
 
207
207
 
208
- [EyeHttp Gem](https://github.com/kostya/eye-http)
209
-
210
208
  [Eye related projects](https://github.com/kostya/eye/wiki/Related-projects)
211
209
 
212
210
  [Articles](https://github.com/kostya/eye/wiki/Articles)
213
211
 
212
+ [Using Env variables](https://github.com/kostya/eye/wiki/Using-ENV-variables-in-config)
213
+
214
+
214
215
  Thanks `Bluepill` for the nice config ideas.
data/bin/leye CHANGED
@@ -6,11 +6,26 @@ require 'eye'
6
6
  # which looking for Eyefile
7
7
  # like foreman
8
8
 
9
+ while true
10
+ if ARGV[0] == '--eyefile'
11
+ ARGV.shift
12
+ ENV['EYE_FILE'] = File.expand_path(ARGV.shift.to_s)
13
+ elsif ARGV[0] == '--eyehome'
14
+ ARGV.shift
15
+ ENV['EYE_HOME'] = File.expand_path(ARGV.shift.to_s)
16
+ else
17
+ break
18
+ end
19
+ end
20
+
9
21
  unless Eye::Local.eyefile
10
- puts "Not found Eyefile"
22
+ puts "\033[31mNot found Eyefile (in #{File.expand_path('.')})\033[0m"
11
23
  exit 1
12
24
  end
13
25
 
14
- Eye::Local.dir = File.dirname(Eye::Local.eyefile)
26
+ unless ENV.key?('EYE_HOME')
27
+ Eye::Local.dir = File.join(File.dirname(Eye::Local.eyefile), '.eye')
28
+ end
29
+
15
30
  Eye::Local.local_runner = true
16
31
  Eye::Cli.start
@@ -0,0 +1,55 @@
1
+ # Triggers example:
2
+ #
3
+ # to execute commands inside trigger need to use 2 methods:
4
+ # process.execute_async(cmd, opts), and
5
+ # process.execute_sync(cmd, opts)
6
+
7
+ Eye.config do
8
+ logger "/tmp/eye.log"
9
+ end
10
+
11
+ Eye.app :triggers do
12
+
13
+ # Execute shell command before process start
14
+ process :a do
15
+ pid_file "/tmp/a.pid"
16
+ start_command "sleep 100"
17
+ daemonize true
18
+
19
+ # send message async which sendxmpp, before process start
20
+ trigger :transition, to: :starting, do: -> {
21
+ process.execute_async "sendxmpp -s 'hhahahaa' someone@jabber.org"
22
+ }
23
+ end
24
+
25
+ # Touch some file before process start, remove file after process die
26
+ process :b do
27
+ pid_file "/tmp/b.pid"
28
+ start_command "sleep 100"
29
+ daemonize true
30
+
31
+ # before process starting, touch some file
32
+ trigger :transition1, to: :starting, do: -> {
33
+ process.execute_sync "touch /tmp/bla.file"
34
+ }
35
+
36
+ # after process, crashed, or stopped, remove that file
37
+ trigger :transition2, to: :down, do: -> {
38
+ process.execute_sync "rm /tmp/bla.file"
39
+ }
40
+ end
41
+
42
+ # With restart :c process, send restart to process :a
43
+ process :c do
44
+ pid_file "/tmp/c.pid"
45
+ start_command "sleep 100"
46
+ daemonize true
47
+
48
+ app_name = app.name
49
+ trigger :transition, :event => :restarting, :do => ->{
50
+ info "send restarting to :a"
51
+ Eye::Control.command('restart', "#{app_name}:a")
52
+ }
53
+ end
54
+
55
+ end
data/lib/eye.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Eye
2
- VERSION = "0.6.3"
3
- ABOUT = "Eye v#{VERSION} (c) 2012-2014 @kostya"
2
+ VERSION = "0.6.4"
3
+ ABOUT = "Eye v#{VERSION} (c) 2012-2015 @kostya"
4
4
  PROCLINE = "eye monitoring v#{VERSION}"
5
5
 
6
6
  autoload :Process, 'eye/process'
@@ -78,7 +78,7 @@ class Eye::Checker
78
78
  end
79
79
 
80
80
  def logger_tag
81
- @process.logger.prefix
81
+ @process.logger.prefix if @process
82
82
  end
83
83
 
84
84
  def logger_sub_tag
@@ -5,6 +5,11 @@ class Eye::Checker::FileCTime < Eye::Checker
5
5
 
6
6
  param :file, [String], true
7
7
 
8
+ def initialize(*args)
9
+ super
10
+ self.file = process.expand_path(file) if process && file
11
+ end
12
+
8
13
  def get_value
9
14
  File.ctime(file) rescue nil
10
15
  end
@@ -6,6 +6,11 @@ class Eye::Checker::FileSize < Eye::Checker::Measure
6
6
 
7
7
  param :file, [String], true
8
8
 
9
+ def initialize(*args)
10
+ super
11
+ self.file = process.expand_path(file) if process && file
12
+ end
13
+
9
14
  def check_name
10
15
  @check_name ||= "fsize(#{measure_str})"
11
16
  end
@@ -3,6 +3,11 @@ class Eye::Checker::FileTouched < Eye::Checker
3
3
  param :file, [String], true
4
4
  param :delete, [TrueClass, FalseClass]
5
5
 
6
+ def initialize(*args)
7
+ super
8
+ self.file = process.expand_path(file) if process && file
9
+ end
10
+
6
11
  def get_value
7
12
  File.exists?(file)
8
13
  end
@@ -36,7 +36,7 @@ class Eye::Checker::Http < Eye::Checker::Defer
36
36
  debug { ex.inspect }
37
37
 
38
38
  if defined?(Net::OpenTimeout) # for ruby 2.0
39
- mes = ex.class.is_a?(Net::OpenTimeout) ? "OpenTimeout<#{@open_timeout}>" : "ReadTimeout<#{@read_timeout}>"
39
+ mes = ex.is_a?(Net::OpenTimeout) ? "OpenTimeout<#{@open_timeout}>" : "ReadTimeout<#{@read_timeout}>"
40
40
  {:exception => mes}
41
41
  else
42
42
  {:exception => "Timeout<#{@open_timeout},#{@read_timeout}>"}
@@ -73,6 +73,7 @@ class Eye::Cli < Thor
73
73
  server_start_foreground(configs.first)
74
74
 
75
75
  elsif server_started?
76
+ configs << Eye::Local.eyefile if Eye::Local.local_runner
76
77
  say_load_result cmd(:load, *configs)
77
78
 
78
79
  else
@@ -90,7 +91,7 @@ class Eye::Cli < Thor
90
91
  cmd(:stop_all, options[:timeout].to_i)
91
92
  end
92
93
 
93
- Eye::Local.client_timeout = 5
94
+ Eye::Local.client_timeout = Eye::Local.default_client_timeout
94
95
  res = _cmd(:quit)
95
96
 
96
97
  # if eye server got crazy, stop by force
@@ -2,6 +2,7 @@ module Eye::Controller::Helpers
2
2
 
3
3
  def set_proc_line
4
4
  str = Eye::PROCLINE
5
+ str = 'l' + str if Eye::Local.local_runner
5
6
  str += " [#{@applications.map(&:name) * ', '}]" if @applications.present?
6
7
  str += " (v #{ENV['EYE_V']})" if ENV['EYE_V']
7
8
  str += " (in #{Eye::Local.dir})"
@@ -10,6 +10,7 @@ module Eye::Controller::Status
10
10
  :ruby => RUBY_DESCRIPTION,
11
11
  :gems => %w|Celluloid Celluloid::IO StateMachine NIO Timers Sigar|.map{|c| gem_version(c) },
12
12
  :logger => Eye::Logger.args.present? ? [Eye::Logger.dev.to_s, *Eye::Logger.args] : Eye::Logger.dev.to_s,
13
+ :dir => Eye::Local.dir,
13
14
  :pid_path => Eye::Local::pid_path,
14
15
  :sock_path => Eye::Local::socket_path,
15
16
  :actors => actors
@@ -94,7 +94,14 @@ class Eye::Dsl::Opts < Eye::Dsl::PureOpts
94
94
  @config[:notify].delete(contact.to_s)
95
95
  end
96
96
 
97
+ def set_stop_command(cmd)
98
+ raise Eye::Dsl::Error, "cannot use both stop_signals and stop_command" if @config[:stop_signals]
99
+ super
100
+ end
101
+
97
102
  def stop_signals(*args)
103
+ raise Eye::Dsl::Error, "cannot use both stop_signals and stop_command" if @config[:stop_command]
104
+
98
105
  if args.count == 0
99
106
  return @config[:stop_signals]
100
107
  end
@@ -174,6 +181,32 @@ class Eye::Dsl::Opts < Eye::Dsl::PureOpts
174
181
  on_server
175
182
  end
176
183
 
184
+ def load_env(filename = '~/.env', raise_when_no_file = true)
185
+ fnames = [File.expand_path(filename, @config[:working_dir]),
186
+ File.expand_path(filename)].uniq
187
+ filenames = fnames.select { |f| File.exists?(f) }
188
+
189
+ if filenames.size < 1
190
+ unless raise_when_no_file
191
+ warn "load_env not found file: '#{filenames.first}'"
192
+ return
193
+ else
194
+ raise Eye::Dsl::Error, "load_env not found in #{fnames}"
195
+ end
196
+ end
197
+ raise Eye::Dsl::Error, "load_env conflict filenames: #{filenames}" if filenames.size > 1
198
+
199
+ content = File.read(filenames.first)
200
+ info "load_env from '#{filenames.first}'"
201
+
202
+ env_vars = content.split("\n")
203
+ env_vars.each do |e|
204
+ next unless e.include?('=')
205
+ k, *v = e.split('=')
206
+ env k => v.join('=')
207
+ end
208
+ end
209
+
177
210
  private
178
211
 
179
212
  def validate_signals(signals = nil)
@@ -34,6 +34,10 @@ module Eye::Dsl::Validation
34
34
  value = @options[param]
35
35
  value.nil? ? default : value
36
36
  end
37
+
38
+ define_method "#{param}=" do |value|
39
+ @options[param] = value
40
+ end
37
41
  end
38
42
 
39
43
  def param_default(param, default)
@@ -54,8 +54,12 @@ module Eye::Local
54
54
  path("processes#{ENV['EYE_V']}.cache")
55
55
  end
56
56
 
57
+ def default_client_timeout
58
+ (ENV['EYE_CLIENT_TIMEOUT'] || 5).to_i
59
+ end
60
+
57
61
  def client_timeout
58
- @client_timeout ||= 5
62
+ @client_timeout ||= default_client_timeout
59
63
  end
60
64
 
61
65
  def client_timeout=(cl)
@@ -82,8 +86,8 @@ module Eye::Local
82
86
  end
83
87
 
84
88
  def find_eyefile(start_from_dir)
85
- fromenv = ENV['EYEFILE']
86
- return fromenv if fromenv && !fromenv.empty? && File.exist?(fromenv)
89
+ fromenv = ENV['EYE_FILE']
90
+ return fromenv if fromenv && !fromenv.empty? && File.file?(fromenv)
87
91
 
88
92
  previous = nil
89
93
  current = File.expand_path(start_from_dir)
@@ -31,7 +31,8 @@ module Eye::Process::Children
31
31
 
32
32
  if new_children.present?
33
33
  new_children.each do |child_pid|
34
- self.children[child_pid] = Eye::ChildProcess.new(child_pid, self[:monitor_children], logger.prefix, self.pid)
34
+ cfg = self[:monitor_children].try :update, :notify => self[:notify]
35
+ self.children[child_pid] = Eye::ChildProcess.new(child_pid, cfg, logger.prefix, self.pid)
35
36
  end
36
37
  end
37
38
 
@@ -47,12 +48,14 @@ module Eye::Process::Children
47
48
  end
48
49
 
49
50
  def remove_children
50
- if children.present?
51
- children.keys.each{|child_pid| remove_child(child_pid) }
52
- end
51
+ children.each_key { |child_pid| clear_child(child_pid) }
53
52
  end
54
53
 
55
54
  def remove_child(child_pid)
55
+ clear_child(child_pid)
56
+ end
57
+
58
+ def clear_child(child_pid)
56
59
  child = self.children.delete(child_pid)
57
60
  child.destroy if child && child.alive?
58
61
  end
@@ -282,6 +282,7 @@ private
282
282
 
283
283
  # cmd is string, or array of signals
284
284
  if cmd.is_a?(String)
285
+ cmd = prepare_command(cmd)
285
286
  res = execute(cmd, config.merge(:timeout => 120))
286
287
  error "cmd #{cmd} error #{res.inspect}" if res[:error]
287
288
  elsif cmd.is_a?(Array)
@@ -76,6 +76,18 @@ module Eye::Process::System
76
76
  defer{ Eye::System::execute cmd, cfg }
77
77
  end
78
78
 
79
+ def execute_sync(cmd, opts = {:timeout => 1.second})
80
+ res = execute cmd, self.config.merge(opts)
81
+ info "execute_sync `#{cmd}` with res: #{res}"
82
+ res
83
+ end
84
+
85
+ def execute_async(cmd, opts = {})
86
+ res = Eye::System.daemonize(cmd, self.config.merge(opts))
87
+ info "execute_async `#{cmd}` with res: #{res}"
88
+ res
89
+ end
90
+
79
91
  def failsafe_load_pid
80
92
  pid = load_pid_from_file
81
93
 
@@ -96,4 +108,8 @@ module Eye::Process::System
96
108
  false
97
109
  end
98
110
 
111
+ def expand_path(path)
112
+ File.expand_path(path, self[:working_dir])
113
+ end
114
+
99
115
  end
metadata CHANGED
@@ -1,251 +1,251 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eye
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Makarchev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-06 00:00:00.000000000 Z
11
+ date: 2015-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: celluloid
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.15.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.15.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: celluloid-io
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.15.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.15.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: state_machine
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: thor
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sigar
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.7.2
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.7.2
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ! '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ! '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - <
101
+ - - "<"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '2.14'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - <
108
+ - - "<"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '2.14'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rr
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ! '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ! '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: ruby-graphviz
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ! '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ! '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: forking
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ! '>='
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ! '>='
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: fakeweb
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ! '>='
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ! '>='
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: eventmachine
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ! '>='
171
+ - - ">="
172
172
  - !ruby/object:Gem::Version
173
173
  version: 1.0.3
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ! '>='
178
+ - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: 1.0.3
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: sinatra
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ! '>='
185
+ - - ">="
186
186
  - !ruby/object:Gem::Version
187
187
  version: '0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - ! '>='
192
+ - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: thin
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
- - - ! '>='
199
+ - - ">="
200
200
  - !ruby/object:Gem::Version
201
201
  version: '0'
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
- - - ! '>='
206
+ - - ">="
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: xmpp4r
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
- - - ! '>='
213
+ - - ">="
214
214
  - !ruby/object:Gem::Version
215
215
  version: '0'
216
216
  type: :development
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
- - - ! '>='
220
+ - - ">="
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0'
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: coveralls
225
225
  requirement: !ruby/object:Gem::Requirement
226
226
  requirements:
227
- - - ! '>='
227
+ - - ">="
228
228
  - !ruby/object:Gem::Version
229
229
  version: '0'
230
230
  type: :development
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
- - - ! '>='
234
+ - - ">="
235
235
  - !ruby/object:Gem::Version
236
236
  version: '0'
237
237
  - !ruby/object:Gem::Dependency
238
238
  name: simplecov
239
239
  requirement: !ruby/object:Gem::Requirement
240
240
  requirements:
241
- - - ! '>='
241
+ - - ">="
242
242
  - !ruby/object:Gem::Version
243
243
  version: 0.8.1
244
244
  type: :development
245
245
  prerelease: false
246
246
  version_requirements: !ruby/object:Gem::Requirement
247
247
  requirements:
248
- - - ! '>='
248
+ - - ">="
249
249
  - !ruby/object:Gem::Version
250
250
  version: 0.8.1
251
251
  description: Process monitoring tool. Inspired from Bluepill and God. Requires Ruby(MRI)
@@ -258,9 +258,9 @@ executables:
258
258
  extensions: []
259
259
  extra_rdoc_files: []
260
260
  files:
261
- - .gitignore
262
- - .rspec
263
- - .travis.yml
261
+ - ".gitignore"
262
+ - ".rspec"
263
+ - ".travis.yml"
264
264
  - CHANGES.md
265
265
  - Gemfile
266
266
  - LICENSE
@@ -286,6 +286,7 @@ files:
286
286
  - examples/stress_test.eye
287
287
  - examples/test.eye
288
288
  - examples/thin-farm.eye
289
+ - examples/triggers.eye
289
290
  - examples/unicorn.eye
290
291
  - eye.gemspec
291
292
  - lib/eye.rb
@@ -382,12 +383,12 @@ require_paths:
382
383
  - lib
383
384
  required_ruby_version: !ruby/object:Gem::Requirement
384
385
  requirements:
385
- - - ! '>='
386
+ - - ">="
386
387
  - !ruby/object:Gem::Version
387
388
  version: 1.9.2
388
389
  required_rubygems_version: !ruby/object:Gem::Requirement
389
390
  requirements:
390
- - - ! '>='
391
+ - - ">="
391
392
  - !ruby/object:Gem::Version
392
393
  version: 1.3.6
393
394
  requirements: []