foreverb 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Small daemon framework **for ruby**, with logging, error handler watcher and much more.
4
4
 
5
- The idea of the name and some concepts was taken by [forever for node.js](https://raw.github.com/indexzero/forever) written by Charlie Robbins.
5
+ My inspiration was [forever for node.js](https://raw.github.com/indexzero/forever) written by Charlie Robbins.
6
6
 
7
7
  Please don't consider this gem as a port because is not.
8
8
 
@@ -29,7 +29,7 @@ So, if you have my needs, **Forever** can be the right choice for you.
29
29
  ## Install:
30
30
 
31
31
  ``` sh
32
- $ gem install forever
32
+ $ gem install foreverb
33
33
  ```
34
34
 
35
35
  ## Deamon Example:
data/lib/forever.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "forever/base"
2
+ require "forever/version"
2
3
 
3
4
  module Forever
4
5
  extend self
data/lib/forever/base.rb CHANGED
@@ -17,132 +17,7 @@ module Forever
17
17
 
18
18
  fork do
19
19
  $0 = "Forever: #{$0}"
20
- puts "=> Process demonized with pid #{Process.pid}"
21
-
22
- %w(INT TERM KILL).each { |signal| trap(signal) { stop! } }
23
-
24
- File.open(pid, "w") { |f| f.write(Process.pid.to_s) } if pid
25
-
26
- stream = log ? File.new(log, "w") : File.open('/dev/null', 'w')
27
- stream.sync = true
28
-
29
- STDOUT.reopen(stream)
30
- STDERR.reopen(STDOUT)
31
-
32
- begin
33
- on_ready.call
34
- rescue Exception => e
35
- Thread.list.reject { |t| t==Thread.current }.map(&:kill)
36
- on_error[e] if on_error
37
- stream.print "\n\n%s\n %s\n\n" % [e.message, e.backtrace.join("\n ")]
38
- sleep 30
39
- retry
40
- end
41
- end
42
- end
43
-
44
- ##
45
- # Caller file
46
- #
47
- def file(value=nil)
48
- value ? @_file = value : @_file
49
- end
50
-
51
- ##
52
- # Base working Directory
53
- #
54
- def dir(value=nil)
55
- value ? @_dir = value : @_dir
56
- end
57
-
58
- ##
59
- # File were we redirect STOUT and STDERR, can be false.
60
- #
61
- # Default: dir + 'log/[process_name].log'
62
- #
63
- def log(value=nil)
64
- @_log ||= File.join(dir, "log/#{File.basename(file)}.log") if exists?(dir, file)
65
- value ? @_log = value : @_log
66
- end
67
-
68
- ##
69
- # File were we store pid
70
- #
71
- # Default: dir + 'tmp/[process_name].pid'
72
- #
73
- def pid(value=nil)
74
- @_pid ||= File.join(dir, "tmp/#{File.basename(file)}.pid") if exists?(dir, file)
75
- value ? @_pid = value : @_pid
76
- end
77
-
78
- ##
79
- # Search if there is a running process and stop it
80
- #
81
- def stop!(kill=true)
82
- if exists?(pid)
83
- _pid = File.read(pid).to_i
84
- puts "=> Found pid #{_pid}..."
85
- FileUtils.rm_f(pid)
86
- begin
87
- puts "=> Killing process #{_pid}..."
88
- Process.kill(:KILL, _pid)
89
- rescue Errno::ESRCH => e
90
- puts "=> #{e.message}"
91
- end
92
- else
93
- puts "=> Pid not found, process seems don't exist!"
94
- end
95
- end
96
-
97
- ##
98
- # Callback raised when an error occour
99
- #
100
- def on_error(&block)
101
- block_given? ? @_on_error = block : @_on_error
102
- end
103
-
104
- ##
105
- # Callback to fire when the daemon start
106
- #
107
- def on_ready(&block)
108
- block_given? ? @_on_error = block : @_on_error
109
- end
110
-
111
- def to_s
112
- "#<Forever dir:#{dir}, file:#{file}, log:#{log}, pid:#{pid}>"
113
- end
114
- alias :inspect :to_s
115
-
116
- def config
117
- { :dir => dir, :file => file, :log => log, :pid => pid }.to_yaml
118
- end
119
- alias :to_yaml :config
120
-
121
- private
122
- def exists?(*values)
123
- values.all? { |value| value && File.exist?(value) }
124
- end
125
- end # Base
126
- end # Foreverrequire 'fileutils'
127
-
128
- module Forever
129
- class Base
130
- def initialize(options={}, &block)
131
- options.each { |k,v| send(k, v) }
132
-
133
- instance_eval(&block)
134
-
135
- Dir.chdir(dir) if exists?(dir)
136
- Dir.mkdir(File.dirname(log)) if log && !File.exist?(File.dirname(log))
137
- Dir.mkdir(File.dirname(pid)) if pid && !File.exist?(File.dirname(pid))
138
-
139
- stop!
140
-
141
- return if ARGV[0] == "stop" || on_ready.nil?
142
-
143
- fork do
144
- $0 = "Forever: #{$0}"
145
- puts "=> Process demonized with pid #{Process.pid}"
20
+ puts "=> Process demonized with pid #{Process.pid} with Forever v.#{Forever::VERSION}"
146
21
 
147
22
  %w(INT TERM KILL).each { |signal| trap(signal) { stop! } }
148
23
 
@@ -1,3 +1,3 @@
1
1
  module Forever
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 5
9
- version: 0.1.5
8
+ - 6
9
+ version: 0.1.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - DAddYE