daemonizer 0.1.3 → 0.1.4

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