tyrantmanager 1.2.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY.rdoc +5 -0
- data/gemspec.rb +4 -3
- data/lib/tyrant_manager/cli.rb +9 -9
- data/lib/tyrant_manager/tyrant_instance.rb +27 -2
- data/lib/tyrant_manager/version.rb +2 -2
- data/tasks/distribution.rake +8 -1
- data/tasks/gemcutter.rake +18 -0
- metadata +19 -8
data/HISTORY.rdoc
CHANGED
data/gemspec.rb
CHANGED
@@ -22,12 +22,13 @@ TyrantManager::GEM_SPEC = Gem::Specification.new do |spec|
|
|
22
22
|
# add dependencies here
|
23
23
|
spec.add_dependency( "loquacious", "~> 1.3.0")
|
24
24
|
spec.add_dependency( "rufus-tokyo", "~> 1.0.0")
|
25
|
-
spec.add_dependency( "logging", "~> 1.
|
26
|
-
spec.add_dependency( "main", "~> 2.
|
25
|
+
spec.add_dependency( "logging", "~> 1.2.2" )
|
26
|
+
spec.add_dependency( "main", "~> 2.9.3" )
|
27
27
|
|
28
28
|
# development dependencies
|
29
|
-
spec.add_development_dependency("configuration", "
|
29
|
+
spec.add_development_dependency("configuration", "~> 1.1.0")
|
30
30
|
spec.add_development_dependency( "rake", "~> 0.8.3")
|
31
|
+
spec.add_development_dependency( "gemcutter", "~> 0.1.4")
|
31
32
|
|
32
33
|
if ext_conf = Configuration.for_if_exist?("extension") then
|
33
34
|
spec.extensions << ext_conf.configs
|
data/lib/tyrant_manager/cli.rb
CHANGED
@@ -19,7 +19,7 @@ class TyrantManager
|
|
19
19
|
argument( :home ) {
|
20
20
|
description "The home directory of the tyrant manager"
|
21
21
|
required
|
22
|
-
default TyrantManager.default_or_home_directory
|
22
|
+
default ::TyrantManager.default_or_home_directory
|
23
23
|
}
|
24
24
|
|
25
25
|
run {
|
@@ -44,7 +44,7 @@ class TyrantManager
|
|
44
44
|
mixin :option_home
|
45
45
|
mixin :option_log_level
|
46
46
|
|
47
|
-
run { Cli.run_command_with_params( "create-instance", params ) }
|
47
|
+
run { ::TyrantManager::Cli.run_command_with_params( "create-instance", params ) }
|
48
48
|
}
|
49
49
|
|
50
50
|
mode( 'start' ) {
|
@@ -57,7 +57,7 @@ class TyrantManager
|
|
57
57
|
default false
|
58
58
|
}
|
59
59
|
|
60
|
-
run { Cli.run_command_with_params( 'start', params ) }
|
60
|
+
run { ::TyrantManager::Cli.run_command_with_params( 'start', params ) }
|
61
61
|
}
|
62
62
|
|
63
63
|
|
@@ -67,7 +67,7 @@ class TyrantManager
|
|
67
67
|
mixin :option_log_level
|
68
68
|
mixin :argument_instances
|
69
69
|
|
70
|
-
run { Cli.run_command_with_params( 'stop', params ) }
|
70
|
+
run { ::TyrantManager::Cli.run_command_with_params( 'stop', params ) }
|
71
71
|
}
|
72
72
|
|
73
73
|
mode('replication-status') {
|
@@ -75,7 +75,7 @@ class TyrantManager
|
|
75
75
|
mixin :option_home
|
76
76
|
mixin :option_log_level
|
77
77
|
mixin :argument_instances
|
78
|
-
run { Cli.run_command_with_params( 'replication-status', params ) }
|
78
|
+
run { ::TyrantManager::Cli.run_command_with_params( 'replication-status', params ) }
|
79
79
|
}
|
80
80
|
|
81
81
|
mode('process-status') {
|
@@ -85,7 +85,7 @@ class TyrantManager
|
|
85
85
|
|
86
86
|
mixin :argument_instances
|
87
87
|
|
88
|
-
run { Cli.run_command_with_params( 'process-status', params ) }
|
88
|
+
run { ::TyrantManager::Cli.run_command_with_params( 'process-status', params ) }
|
89
89
|
}
|
90
90
|
|
91
91
|
mode( 'stats' ) {
|
@@ -95,7 +95,7 @@ class TyrantManager
|
|
95
95
|
|
96
96
|
mixin :argument_instances
|
97
97
|
|
98
|
-
run { Cli.run_command_with_params( 'stats', params ) }
|
98
|
+
run { ::TyrantManager::Cli.run_command_with_params( 'stats', params ) }
|
99
99
|
}
|
100
100
|
|
101
101
|
|
@@ -104,7 +104,7 @@ class TyrantManager
|
|
104
104
|
mixin :option_home
|
105
105
|
mixin :option_log_level
|
106
106
|
mixin :argument_instances
|
107
|
-
run { Cli.run_command_with_params( 'list', params ) }
|
107
|
+
run { ::TyrantManager::Cli.run_command_with_params( 'list', params ) }
|
108
108
|
}
|
109
109
|
|
110
110
|
#--- Mixins ---
|
@@ -113,7 +113,7 @@ class TyrantManager
|
|
113
113
|
description "The home directory of the tyrant manager"
|
114
114
|
argument :required
|
115
115
|
validate { |v| ::File.directory?( v ) }
|
116
|
-
default TyrantManager.default_or_home_directory
|
116
|
+
default ::TyrantManager.default_or_home_directory
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
@@ -289,7 +289,16 @@ class TyrantManager
|
|
289
289
|
#
|
290
290
|
def start
|
291
291
|
o = %x[ #{start_command} ]
|
292
|
-
|
292
|
+
o.strip!
|
293
|
+
logger.info o if o.length > 0
|
294
|
+
3.times do |x|
|
295
|
+
if self.running? then
|
296
|
+
logger.info "#{self.name} is running as pid #{self.pid}"
|
297
|
+
break
|
298
|
+
else
|
299
|
+
sleep 0.25
|
300
|
+
end
|
301
|
+
end
|
293
302
|
end
|
294
303
|
|
295
304
|
#
|
@@ -304,7 +313,8 @@ class TyrantManager
|
|
304
313
|
logger.info "Process #{_pid} is beyond my control"
|
305
314
|
rescue Errno::ESRCH
|
306
315
|
logger.info "Process #{_pid} is dead"
|
307
|
-
|
316
|
+
cleanup_pid_file
|
317
|
+
rescue => e
|
308
318
|
logger.error "Problem sending kill(TERM, #{_pid}) : #{e}"
|
309
319
|
end
|
310
320
|
end
|
@@ -326,6 +336,7 @@ class TyrantManager
|
|
326
336
|
logger.info "Process #{_pid} is beyond my control"
|
327
337
|
rescue Errno::ESRCH
|
328
338
|
logger.info "Process #{_pid} is dead"
|
339
|
+
cleanup_pid_file
|
329
340
|
return false
|
330
341
|
rescue => e
|
331
342
|
logger.error "Problem sending kill(0, #{_pid}) : #{e}"
|
@@ -380,6 +391,20 @@ class TyrantManager
|
|
380
391
|
|
381
392
|
private
|
382
393
|
|
394
|
+
def cleanup_pid_file
|
395
|
+
if File.exist?( self.pid_file ) then
|
396
|
+
logger.warn "Pid file #{self.pid_file} still exists."
|
397
|
+
logger.warn "The tyrant server may have exited with a failure."
|
398
|
+
logger.warn "Here are the last few lines of the log file (#{self.log_file}):"
|
399
|
+
lines = %x[ tail -10 #{self.log_file} ]
|
400
|
+
lines.split("\n").each do |l|
|
401
|
+
logger.warn " #{l.strip}"
|
402
|
+
end
|
403
|
+
logger.warn "Cleaning up stale pid file for #{self.pid}"
|
404
|
+
File.unlink( self.pid_file )
|
405
|
+
end
|
406
|
+
end
|
407
|
+
|
383
408
|
#
|
384
409
|
# take the given path, and if it is not an absolute path append it
|
385
410
|
# to the home directory of the instance.
|
data/tasks/distribution.rake
CHANGED
@@ -34,5 +34,12 @@ if pkg_config = Configuration.for_if_exist?("packaging") then
|
|
34
34
|
desc "reinstall gem"
|
35
35
|
task :reinstall => [:uninstall, :repackage, :install]
|
36
36
|
|
37
|
-
|
37
|
+
desc "distribute copiously"
|
38
|
+
task :copious => [:clean, :package ] do
|
39
|
+
Rake::SshFilePublisher.new('jeremy@copiousfreetime.org',
|
40
|
+
'/var/www/vhosts/www.copiousfreetime.org/htdocs/gems/gems',
|
41
|
+
'pkg', "#{TyrantManager::GEM_SPEC.full_name}.gem").upload
|
42
|
+
sh "ssh jeremy@copiousfreetime.org rake -f /var/www/vhosts/www.copiousfreetime.org/htdocs/gems/Rakefile"
|
43
|
+
end
|
44
|
+
end
|
38
45
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
require 'tasks/config'
|
3
|
+
gem 'gemcutter'
|
4
|
+
require 'rake/gemcutter_pushtask'
|
5
|
+
|
6
|
+
#-----------------------------------------------------------------------
|
7
|
+
# Gemcutter additions to the task library
|
8
|
+
#-----------------------------------------------------------------------
|
9
|
+
namespace :dist do
|
10
|
+
desc "Release files to gemcutter"
|
11
|
+
|
12
|
+
GemCutter::Rake::PushTask.new do |t|
|
13
|
+
t.gem_file = File.expand_path( File.join( "pkg", "#{TyrantManager::GEM_SPEC.full_name}.gem" ) )
|
14
|
+
end
|
15
|
+
|
16
|
+
task :push => :gem
|
17
|
+
|
18
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tyrantmanager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Hinegardner
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-10-04 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -40,7 +40,7 @@ dependencies:
|
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 1.
|
43
|
+
version: 1.2.2
|
44
44
|
version:
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
46
|
name: main
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - ~>
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 2.
|
53
|
+
version: 2.9.3
|
54
54
|
version:
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: configuration
|
@@ -58,9 +58,9 @@ dependencies:
|
|
58
58
|
version_requirement:
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- -
|
61
|
+
- - ~>
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
63
|
+
version: 1.1.0
|
64
64
|
version:
|
65
65
|
- !ruby/object:Gem::Dependency
|
66
66
|
name: rake
|
@@ -72,6 +72,16 @@ dependencies:
|
|
72
72
|
- !ruby/object:Gem::Version
|
73
73
|
version: 0.8.3
|
74
74
|
version:
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: gemcutter
|
77
|
+
type: :development
|
78
|
+
version_requirement:
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ~>
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 0.1.4
|
84
|
+
version:
|
75
85
|
description: |-
|
76
86
|
A command line tool for managing Tokyo Tyrant instances. It allows for the
|
77
87
|
creation, starting, stopping, listing, stating of many tokyo tyrant instances
|
@@ -134,13 +144,14 @@ files:
|
|
134
144
|
- tasks/announce.rake
|
135
145
|
- tasks/distribution.rake
|
136
146
|
- tasks/documentation.rake
|
147
|
+
- tasks/gemcutter.rake
|
137
148
|
- tasks/rspec.rake
|
138
149
|
- tasks/rubyforge.rake
|
139
150
|
- tasks/config.rb
|
140
151
|
- tasks/utils.rb
|
141
152
|
- gemspec.rb
|
142
153
|
has_rdoc: true
|
143
|
-
homepage: http://
|
154
|
+
homepage: http://copiousfreetime.rubyforge.org/tyrantmanager
|
144
155
|
licenses: []
|
145
156
|
|
146
157
|
post_install_message:
|
@@ -164,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
175
|
requirements: []
|
165
176
|
|
166
177
|
rubyforge_project: copiousfreetime
|
167
|
-
rubygems_version: 1.3.
|
178
|
+
rubygems_version: 1.3.5
|
168
179
|
signing_key:
|
169
180
|
specification_version: 3
|
170
181
|
summary: A command line tool for managing Tokyo Tyrant instances
|