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 CHANGED
@@ -1,4 +1,9 @@
1
1
  = Changelog
2
+ == Version 1.3.0 2009-10-04
3
+
4
+ * become ruby 1.9 compatible
5
+ * clean up stale pid files whenever possible (Martin Sarsale)
6
+
2
7
  == Version 1.2.1 2009-09-14
3
8
 
4
9
  * fix bug where preexisting instance configuration does not work with 1.2.0
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.1.4" )
26
- spec.add_dependency( "main", "~> 2.8.4" )
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", ">= 0.0.5")
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
@@ -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
- logger.info o
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
- rescue => e
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.
@@ -6,8 +6,8 @@
6
6
  class TyrantManager
7
7
  module Version
8
8
  MAJOR = 1
9
- MINOR = 2
10
- BUILD = 1
9
+ MINOR = 3
10
+ BUILD = 0
11
11
 
12
12
  def to_a
13
13
  [MAJOR, MINOR, BUILD]
@@ -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
- end
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.2.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-09-14 00:00:00 -06:00
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.1.4
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.8.4
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: 0.0.5
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://tyrant-manager.rubyforge.org/
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.4
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