daemonizer 0.4.2 → 0.4.3

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.
Files changed (4) hide show
  1. data/README.md +48 -30
  2. data/VERSION +1 -1
  3. data/daemonizer.gemspec +2 -2
  4. metadata +4 -4
data/README.md CHANGED
@@ -12,22 +12,19 @@ Synopsis
12
12
  --------
13
13
 
14
14
  Daemonizer is a simple ruby framework to create custom daemons. It is fully
15
- compatible with EventMachine, Rails and any other Ruby frameworks. Two workers
16
- type supported - forked and threaded.
15
+ compatible with EventMachine, Rails and any other Ruby frameworks.
17
16
 
18
17
 
19
18
  Feature List
20
19
  ------------
21
20
 
22
- **1. Demfile (similar to Gemfile, Rakefile)** as a configuration file. It is
21
+ **1. Daemonfile (similar to Gemfile, Rakefile)** as a configuration file. It is
23
22
  possible to describe different background pools there.
24
-
25
- **2. Two engines**: :thread and :fork. (thread is currently broken)
26
23
 
27
- **3. Monitoring**: If child is found dead it will be immediately
24
+ **2. Monitoring**: If child is found dead it will be immediately
28
25
  restored
29
26
 
30
- **4. Logging** (via [http://log4r.rubyforge.org/](log4r))
27
+ **3. Logging**
31
28
 
32
29
  Installing
33
30
  ----------
@@ -44,10 +41,10 @@ Usage
44
41
  **Demfile example:**
45
42
 
46
43
  workers 2
44
+ poll_period 5
47
45
 
48
46
  pool :daemonizer do
49
47
  workers 4
50
- poll_period 5
51
48
  log_file "log/daemonizer.log" #relative to Demfile
52
49
 
53
50
  prepare do |logger, block|
@@ -77,44 +74,65 @@ Usage
77
74
  end
78
75
  end
79
76
 
80
- pool :new_daemonizer do
81
- workers 4
82
- poll_period 5
83
- log_file "log/daemonizer.log" #relative to Demfile
84
-
85
- handler MyBackgroundSolution::DaemonizerHandler
86
-
87
- not_cow_friendly #disable Copy-On-Write friendly (enabled by default)
88
-
89
- #automatically-parsed option by daemonizer
90
- set_option :queue do |worker_id, worker_count|
91
- "queue_#{worker_id}"
77
+ settings_group do
78
+ before_start do |logger, worker_id, workers_count|
79
+ #reconnect to db, etc.
92
80
  end
93
-
81
+
94
82
  #simple string option
95
83
  set_option :author, "Gleb Pomykalov"
84
+
85
+ pool :new_daemonizer do
86
+ workers 4
87
+ log_file "log/daemonizer.log" #relative to Demfile
88
+
89
+ handler MyBackgroundSolution::DaemonizerHandler
96
90
 
97
- #lambda-option (transparent for daemonizer, fully processed by handler)
98
- set_option :on_error, lambda { |object| object.logger.fatal "epic fail"}
99
-
100
- #executes after worker forked but before start block invoked
101
- after_fork do |logger, worker_id, workers_count|
102
- #reconnect to db, etc.
91
+ not_cow_friendly #disable Copy-On-Write friendly (enabled by default)
92
+
93
+ #automatically-parsed option by daemonizer
94
+ set_option :queue do |worker_id, worker_count|
95
+ "queue_#{worker_id}"
96
+ end
97
+
98
+ #lambda-option (transparent for daemonizer, fully processed by handler)
99
+ set_option :on_error, lambda { |object| object.logger.fatal "epic fail"}
103
100
  end
104
- end
105
101
 
106
102
 
103
+ pool :new_daemonizer2 do
104
+ workers 4
105
+ log_file "log/daemonizer2.log" #relative to Demfile
106
+
107
+ handler MyBackgroundSolution::DaemonizerHandler
108
+
109
+ not_cow_friendly #disable Copy-On-Write friendly (enabled by default)
110
+
111
+ #automatically-parsed option by daemonizer
112
+ set_option :queue do |worker_id, worker_count|
113
+ "another_queue_#{worker_id}"
114
+ end
115
+
116
+ after_prepare do |logger|
117
+ require 'something'
118
+ end
119
+
120
+ #lambda-option (transparent for daemonizer, fully processed by handler)
121
+ set_option :on_error, lambda { |object| object.logger.fatal "epic fail"}
122
+ end
123
+ end
124
+
107
125
  **Handler example**
108
126
 
109
127
  module MyBackgroundSolution
110
128
  class DaemonizerHandler < Daemonizer::Handler
111
- def before_init(block)
129
+ def prepare(block)
112
130
  require File.join(Daemonizer.root, '/config/environment') #Require rails
113
131
  require 'my_background_solution/worker' #Require our code
114
132
  super #now we are ready to fork
115
133
  end
116
134
 
117
- def after_init
135
+ def start
118
136
  #we are in worker process
119
137
  logger.info "Starting cycle. We are number #{worker_id} from #{workers_count}"
120
138
  logger.info "Options - #{option(:queue)}" #We can get option :queue, which is set with set_option in pool configuration
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.2
1
+ 0.4.3
data/daemonizer.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{daemonizer}
8
- s.version = "0.4.2"
8
+ s.version = "0.4.3"
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-16}
12
+ s.date = %q{2010-07-17}
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}
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: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 2
10
- version: 0.4.2
9
+ - 3
10
+ version: 0.4.3
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-16 00:00:00 +04:00
18
+ date: 2010-07-17 00:00:00 +04:00
19
19
  default_executable: daemonizer
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency