README.md in daemonizer-0.4.2 vs README.md in daemonizer-0.4.3
- old
+ new
@@ -10,26 +10,23 @@
Synopsis
--------
Daemonizer is a simple ruby framework to create custom daemons. It is fully
-compatible with EventMachine, Rails and any other Ruby frameworks. Two workers
-type supported - forked and threaded.
+compatible with EventMachine, Rails and any other Ruby frameworks.
Feature List
------------
-**1. Demfile (similar to Gemfile, Rakefile)** as a configuration file. It is
+**1. Daemonfile (similar to Gemfile, Rakefile)** as a configuration file. It is
possible to describe different background pools there.
-
-**2. Two engines**: :thread and :fork. (thread is currently broken)
-**3. Monitoring**: If child is found dead it will be immediately
+**2. Monitoring**: If child is found dead it will be immediately
restored
-**4. Logging** (via [http://log4r.rubyforge.org/](log4r))
+**3. Logging**
Installing
----------
To install Daemonizer, use the following command:
@@ -42,14 +39,14 @@
-----
**Demfile example:**
workers 2
+ poll_period 5
pool :daemonizer do
workers 4
- poll_period 5
log_file "log/daemonizer.log" #relative to Demfile
prepare do |logger, block|
block.call
end
@@ -75,47 +72,68 @@
true
end
end
- pool :new_daemonizer do
- workers 4
- poll_period 5
- log_file "log/daemonizer.log" #relative to Demfile
-
- handler MyBackgroundSolution::DaemonizerHandler
-
- not_cow_friendly #disable Copy-On-Write friendly (enabled by default)
-
- #automatically-parsed option by daemonizer
- set_option :queue do |worker_id, worker_count|
- "queue_#{worker_id}"
+ settings_group do
+ before_start do |logger, worker_id, workers_count|
+ #reconnect to db, etc.
end
-
+
#simple string option
set_option :author, "Gleb Pomykalov"
+
+ pool :new_daemonizer do
+ workers 4
+ log_file "log/daemonizer.log" #relative to Demfile
+
+ handler MyBackgroundSolution::DaemonizerHandler
- #lambda-option (transparent for daemonizer, fully processed by handler)
- set_option :on_error, lambda { |object| object.logger.fatal "epic fail"}
-
- #executes after worker forked but before start block invoked
- after_fork do |logger, worker_id, workers_count|
- #reconnect to db, etc.
+ not_cow_friendly #disable Copy-On-Write friendly (enabled by default)
+
+ #automatically-parsed option by daemonizer
+ set_option :queue do |worker_id, worker_count|
+ "queue_#{worker_id}"
+ end
+
+ #lambda-option (transparent for daemonizer, fully processed by handler)
+ set_option :on_error, lambda { |object| object.logger.fatal "epic fail"}
end
- end
+ pool :new_daemonizer2 do
+ workers 4
+ log_file "log/daemonizer2.log" #relative to Demfile
+
+ handler MyBackgroundSolution::DaemonizerHandler
+
+ not_cow_friendly #disable Copy-On-Write friendly (enabled by default)
+
+ #automatically-parsed option by daemonizer
+ set_option :queue do |worker_id, worker_count|
+ "another_queue_#{worker_id}"
+ end
+
+ after_prepare do |logger|
+ require 'something'
+ end
+
+ #lambda-option (transparent for daemonizer, fully processed by handler)
+ set_option :on_error, lambda { |object| object.logger.fatal "epic fail"}
+ end
+ end
+
**Handler example**
module MyBackgroundSolution
class DaemonizerHandler < Daemonizer::Handler
- def before_init(block)
+ def prepare(block)
require File.join(Daemonizer.root, '/config/environment') #Require rails
require 'my_background_solution/worker' #Require our code
super #now we are ready to fork
end
- def after_init
+ def start
#we are in worker process
logger.info "Starting cycle. We are number #{worker_id} from #{workers_count}"
logger.info "Options - #{option(:queue)}" #We can get option :queue, which is set with set_option in pool configuration
worker = Worker.new
worker.run