tyrantmanager 1.2.1 → 1.3.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.
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