daemonizer 0.1.3 → 0.1.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{daemonizer}
8
- s.version = "0.1.3"
8
+ s.version = "0.1.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gleb Pomykalov"]
12
- s.date = %q{2010-07-12}
12
+ s.date = %q{2010-07-13}
13
13
  s.default_executable = %q{daemonizer}
14
14
  s.description = %q{Inspired by bundler and rack. Mostly built on top of Alexey Kovyrin's loops code. http://github.com/kovyrin/loops}
15
15
  s.email = %q{glebpom@gmail.com}
@@ -13,9 +13,45 @@ module Daemonizer
13
13
  end
14
14
 
15
15
  def self.root
16
- @@root
16
+ if defined?(@@root)
17
+ @@root
18
+ else
19
+ File.dirname(demfile)
20
+ end
21
+ end
22
+
23
+ def self.demfile=(demfile_name)
24
+ @@demfile = File.expand_path(demfile_name)
25
+ @@demfile
26
+ end
27
+
28
+ def self.demfile
29
+ if defined?(@@demfile)
30
+ @@demfile
31
+ else
32
+ "Demfile"
33
+ end
17
34
  end
18
35
 
36
+ def self.[](pool)
37
+ find_pools(pool).first or nil
38
+ end
39
+
40
+ def self.find_pools(pool_name = nil)
41
+ pools = Dsl.evaluate(demfile)
42
+
43
+ if pool_name
44
+ if pool = pools[pool_name.to_sym]
45
+ [pool]
46
+ else
47
+ puts "#{pool_name} is not configured"
48
+ []
49
+ end
50
+ else
51
+ pools.values
52
+ end
53
+ end
54
+
19
55
  end
20
56
 
21
57
  require File.dirname(__FILE__) + '/../lib/daemonizer/autoload'
@@ -5,14 +5,16 @@ module Daemonizer
5
5
  class CLI < Thor
6
6
  check_unknown_options!
7
7
 
8
+ method_option :demfile, :type => :string, :aliases => "-D", :banner => "Path to Demfile"
9
+
8
10
  def initialize(*)
9
11
  super
12
+ Daemonizer.demfile = options[:demfile] || "Demfile"
10
13
  end
11
14
 
12
15
  desc "start", "Start pool"
13
- method_option :demfile, :type => :string, :aliases => "-D", :banner => "Path to Demfile"
14
16
  def start(pool_name = nil)
15
- control_pools_loop(pool_name, "successfully started", options[:demfile]) do |pool|
17
+ control_pools_loop(pool_name, "successfully started") do |pool|
16
18
  # Pid file check
17
19
  if Daemonize.check_pid(pool.pid_file)
18
20
  print_pool pool.name, "Can't start, another process exists!"
@@ -41,9 +43,8 @@ module Daemonizer
41
43
  end
42
44
 
43
45
  desc "stop", "Stop pool"
44
- method_option :demfile, :type => :string, :aliases => "-D", :banner => "Path to Demfile"
45
46
  def stop(pool_name = nil)
46
- control_pools_loop(pool_name, "successfully stoped", options[:demfile]) do |pool|
47
+ control_pools_loop(pool_name, "successfully stoped") do |pool|
47
48
  STDOUT.sync = true
48
49
  unless Daemonize.check_pid(pool.pid_file)
49
50
  print_pool pool.name, "No pid file or a stale pid file!"
@@ -65,18 +66,28 @@ module Daemonizer
65
66
  return true
66
67
  end
67
68
 
69
+ desc "list", "List of pools"
70
+ def list
71
+ puts "List of configured pools:"
72
+ puts ""
73
+ Daemonizer.find_pools(nil).each do |pool|
74
+ puts " * #{pool.name}"
75
+ end
76
+ puts ""
77
+ return true
78
+ end
79
+
80
+
68
81
  desc "restart", "Restart pool"
69
- method_option :demfile, :type => :string, :aliases => "-D", :banner => "Path to Demfile"
70
82
  def restart(pool_name = nil)
71
83
  invoke :stop, pool_name
72
84
  invoke :start, pool_name
73
85
  end
74
86
 
75
87
  desc "debug", "Debug pool (do not demonize)"
76
- method_option :demfile, :type => :string, :aliases => "-D", :banner => "Path to Demfile"
77
88
  def debug(pool_name = nil)
78
89
  puts "You should supply pool_name to debug" if pool_name.nil?
79
- control_pools_loop(pool_name, "execution ended", options[:demfile]) do |pool|
90
+ control_pools_loop(pool_name, "execution ended") do |pool|
80
91
  STDOUT.sync = true
81
92
  print_pool pool.name, "Debugging pool: "
82
93
 
@@ -90,8 +101,8 @@ module Daemonizer
90
101
  end
91
102
 
92
103
  private
93
- def control_pools_loop(pool_name, message = nil, demfile = nil, &block)
94
- find_pools(pool_name, demfile).each do |pool|
104
+ def control_pools_loop(pool_name, message = nil, &block)
105
+ Daemonizer.find_pools(pool_name).each do |pool|
95
106
  Process.fork do
96
107
  yield(pool)
97
108
  end
@@ -102,25 +113,6 @@ module Daemonizer
102
113
  end
103
114
  end
104
115
 
105
- def find_pools(pool_name, demfile)
106
- demfile_name = demfile || "Demfile"
107
-
108
- Daemonizer.root = File.dirname(File.expand_path(demfile_name))
109
-
110
- pools = Dsl.evaluate(demfile_name)
111
-
112
- if pool_name
113
- if pool = pools[pool_name.to_sym]
114
- [pool]
115
- else
116
- print_pool pool_name, "pool is not configured"
117
- []
118
- end
119
- else
120
- pools.values
121
- end
122
- end
123
-
124
116
  def print_pool(pool_name, message)
125
117
  puts "#{pool_name}: #{message}"
126
118
  end
@@ -8,10 +8,17 @@ module Daemonizer
8
8
  @pool = pool
9
9
  @options = options
10
10
  init_defaults
11
- init_logger
12
11
  validate
13
12
  initialize_handler
14
13
  end
14
+
15
+ def option(key)
16
+ if handler
17
+ handler.option(key)
18
+ else
19
+ raise ConfigError, "handler is not initialized"
20
+ end
21
+ end
15
22
 
16
23
  def initialize_handler
17
24
  if @options[:after_init]
@@ -23,15 +30,6 @@ module Daemonizer
23
30
  @handler.logger = @logger
24
31
  end
25
32
 
26
- def init_logger
27
- @logger = Logger.new @pool.to_s
28
- outputter = FileOutputter.new('log', :filename => self.log_file)
29
- outputter.formatter = PatternFormatter.new :pattern => "%d - %l %g - %m"
30
- @logger.outputters = outputter
31
- @logger.level = INFO
32
- GDC.set "#{Process.pid}/monitor"
33
- end
34
-
35
33
  def init_defaults
36
34
  @options[:before_init] ||= nil
37
35
  @options[:after_init] ||= nil
@@ -78,10 +76,6 @@ module Daemonizer
78
76
  def name
79
77
  @pool
80
78
  end
81
-
82
- def logger
83
- @logger
84
- end
85
79
  end
86
80
 
87
81
  end
@@ -1,13 +1,16 @@
1
1
  module Daemonizer
2
2
  class Engine
3
3
  attr_reader :config
4
+ attr_reader :logger
4
5
 
5
6
  def initialize(config, debug = false)
6
7
  @config = config
7
- end
8
-
9
- def logger
10
- @config.logger
8
+ @logger = Logger.new @config.name.to_s
9
+ outputter = FileOutputter.new('log', :filename => self.log_file)
10
+ outputter.formatter = PatternFormatter.new :pattern => "%d - %l %g - %m"
11
+ @logger.outputters = outputter
12
+ @logger.level = INFO
13
+ GDC.set "#{Process.pid}/monitor"
11
14
  end
12
15
 
13
16
  def start!
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daemonizer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gleb Pomykalov
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-12 00:00:00 +04:00
18
+ date: 2010-07-13 00:00:00 +04:00
19
19
  default_executable: daemonizer
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency