eye 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
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: []