dctl 1.0.0 → 1.0.1

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.
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ *1.0.1* (08th April, 2005) Bruno Carnazzi <mailto:bcarnazzi@gmail.com>
2
+ * updated Rakefile (and included gemspec)
3
+ * added a check on daemon for valid app_path (daemon_test.rb updated)
4
+ * updated documentation
5
+
1
6
  *1.0.0* (07th April, 2005) Bruno Carnazzi <mailto:bcarnazzi@gmail.com>
2
7
  * Full rewrite from scratch
3
8
  * Multiple daemon instances does not exists anymore
data/README CHANGED
@@ -4,7 +4,7 @@ dctl is a small script for providing daemon functionnalty (start, stop, ...)
4
4
  to non-daemon process or script, with automatic handling of pidfiles.
5
5
  dctl is mainly an extended rewrite of the daemons[http://rubyforge.org/projects/daemons/]
6
6
  project for learning purpose.
7
- It is designed to be small and smart and I try to apply XP's good practice (unit test)
7
+ It is designed to be small and smart ("less-is-more" philosophy), generic, and well-tested.
8
8
 
9
9
  Major features:
10
10
  * Convert any executable file with endless lifecycle into a controllable daemon
@@ -14,7 +14,7 @@ Major features:
14
14
 
15
15
  == Examples
16
16
 
17
- === Start a daemon with redirection of stdout
17
+ === Start a daemon with redirection of stdout in file 'out'
18
18
  % dctl start -oout test/infinite.sh
19
19
 
20
20
  === Get the status of a daemon
@@ -32,27 +32,35 @@ The latest version of dctl can be found at :
32
32
 
33
33
  == Installation
34
34
 
35
- The prefered method of installing dctl is currently through its setup.rb file.
36
- As dctl stands on cmdparser, you need to have cmdparser installed before.
37
- I plan to make a GEM for dctl soon.
35
+ As dctl stands on cmdparse[http://rubyforge.org/projects/cmdparse/], you need to have cmdparse[http://rubyforge.org/projects/cmdparse/] installed before.
38
36
 
39
- from dctl distribution directory:
40
- % [sudo] ruby setup.rb
37
+ Installation *with* RubyGems:
38
+ $ su
39
+ # gem install dctl
40
+
41
+ Installation *without* RubyGems:
42
+ $ tar xfz dctl-x.x.x.tar.gz
43
+ $ cd dctl-x.x.x
44
+ $ su
45
+ # ruby setup.rb
41
46
 
42
- === Notes
43
- If you installed cmdparser as a gem, please check your RUBYOPTS which should looks like:
44
- % echo $RUBYOPTS
45
- -rubygems
46
47
 
47
- If not, do the following :
48
- % export RUBYOPTS="-rubygems"
48
+ == Notes
49
+
50
+ Please note that dctl test suite only succeeds if launched by a non-root user !
51
+
52
+
53
+ == Future
54
+
55
+ I'm thinking about dctl as a system service manager...
49
56
 
50
57
 
51
58
  == Author
52
59
 
53
60
  Written in 2005 by Bruno Carnazzi <mailto:bcarnazzi@gmail.com>
54
61
 
55
- == License
62
+
63
+ == License and copyright
56
64
 
57
65
  dctl is free software. You can redistribute it under the terms specified in
58
66
  the COPYING file of the Ruby distribution.
@@ -61,3 +69,4 @@ the COPYING file of the Ruby distribution.
61
69
  == Feedback and other resources
62
70
 
63
71
  At http://rubyforge.org/projects/dctl/
72
+
data/Rakefile CHANGED
@@ -59,7 +59,7 @@ spec = Gem::Specification.new do |s|
59
59
 
60
60
  s.files = [ "Rakefile", "setup.rb", "README", "TODO", "CHANGELOG" ]
61
61
  dist_dirs.each do |dir|
62
- s.files = s.files + Dir.glob( "#{dir}/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
62
+ s.files = s.files + Dir.glob( "#{dir}/**/*" ).delete_if { |item| item.include?("\.svn") or item.include?("CVS") }
63
63
  end
64
64
  s.executables = ['dctl']
65
65
  s.bindir = 'bin'
@@ -77,7 +77,7 @@ spec = Gem::Specification.new do |s|
77
77
 
78
78
  s.author = "Bruno Carnazzi"
79
79
  s.email = "bcarnazzi@gmail.com"
80
- s.homepage = "http://rubyforge.org/project/dctl/"
80
+ s.homepage = "http://rubyforge.org/projects/dctl/"
81
81
  s.rubyforge_project = "dctl"
82
82
  end
83
83
 
data/TODO CHANGED
@@ -1,5 +1,5 @@
1
1
  - write a *real* todo file -> DONE (05/04/05)
2
2
  - write a bit of rdoc -> DONE (05/04/05)
3
3
  - write a 'status' command -> DONE (05/04/05)
4
- - write a 'rakefile'
5
- - package as a gem
4
+ - write a 'rakefile' -> DONE (08/04/05)
5
+ - package as a gem -> DONE (08/04/05)
data/lib/dctl/daemon.rb CHANGED
@@ -10,6 +10,9 @@ module Dctl
10
10
  def initialize(cmd, pidpath)
11
11
  @app_path = Daemon::which cmd
12
12
  @app_path = File.expand_path cmd if not @app_path
13
+ raise Errno::EISDIR, @app_path if File.directory? @app_path
14
+ raise Errno::ENOENT, @app_path until File.file? @app_path
15
+ raise Errno::EACCES, @app_path until File.executable? @app_path
13
16
  @pidfile = PidFile.new pidpath, File.basename(cmd)
14
17
  end
15
18
 
data/lib/dctl/metainf.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # This file contains informations about Dctl current release.
2
2
 
3
3
  module Dctl
4
- VERSION = [1, 0, 0]
4
+ VERSION = [1, 0, 1]
5
5
  RELEASE = 'Leonard release'
6
6
  end
data/test/daemon_test.rb CHANGED
@@ -20,20 +20,19 @@ class DaemonTest < Test::Unit::TestCase
20
20
 
21
21
  def test_run
22
22
  assert_raise(Errno::ENOENT) { Dctl::Daemon.new('idontexist', '.').run }
23
- assert_raise(Errno::EACCES) { Dctl::Daemon.new('/bin', '.').run }
23
+ assert_raise(Errno::EISDIR) { Dctl::Daemon.new('/bin', '.').run }
24
24
  assert_raise(Errno::EACCES) { Dctl::Daemon.new('/etc/passwd', '.').run }
25
25
  end
26
26
 
27
27
  def test_stop
28
- fork { Dctl::Daemon.new('test/infinite.sh', '.').start }
29
- sleep 1
28
+ fork { Dctl::Daemon.new('test/infinite.sh', '.').start } and sleep 1
30
29
  assert_nothing_thrown { Dctl::Daemon.new('test/infinite.sh', '.').stop }
31
30
  assert Dir['*.pid'].empty?
32
31
  assert_raise(Errno::ENOENT) { Dctl::Daemon.new('test/infinite.sh', '.').stop }
33
32
  end
34
33
 
35
34
  def test_concurrent
36
- puts '1' ; fork { Dctl::Daemon.new('test/infinite.sh', '.').start }
35
+ puts '1' ; fork { Dctl::Daemon.new('test/infinite.sh', '.').start } and sleep 1
37
36
  puts '2' ; assert_raise(Errno::EEXIST) { Dctl::Daemon.new('test/infinite.sh', '.').run }
38
37
  puts '3' ; assert_nothing_thrown { Dctl::Daemon.new('test/infinite.sh', '.').stop }
39
38
  assert Dir['*.pid'].empty?
metadata CHANGED
@@ -3,13 +3,13 @@ rubygems_version: 0.8.10
3
3
  specification_version: 1
4
4
  name: dctl
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.0.0
7
- date: 2005-04-07
6
+ version: 1.0.1
7
+ date: 2005-04-08
8
8
  summary: "dctl - a daemon controller written in Ruby"
9
9
  require_paths:
10
10
  - lib
11
11
  email: bcarnazzi@gmail.com
12
- homepage: http://rubyforge.org/project/dctl/
12
+ homepage: http://rubyforge.org/projects/dctl/
13
13
  rubyforge_project: dctl
14
14
  description: "dctl is a small script for providing daemon functionnalty (start, stop, ...) to
15
15
  non-daemon process or script, with automatic handling of pidfiles."