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