officer 0.3.3 → 0.4.0

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/README.markdown CHANGED
@@ -9,11 +9,24 @@ It is implemented using Ruby and Eventmachine. Inspiration comes from [elock](ht
9
9
 
10
10
  ## Usage
11
11
 
12
+ Officer uses the 'daemons' gem to simplify creating long lived background processes.
13
+ Here are some simple examples in case you aren't familiar with it.
14
+
15
+ 'daemons' help information:
12
16
  sudo officer --help
13
- sudo officer start
14
17
 
15
- - The server listens on 0.0.0.0:11500 by default. In the future this should be configurable.
16
- - All debugging output goes to stdout for now. Use 'sudo officer run' to see it.
18
+ Officer's help information:
19
+ sudo officer run -- --help
20
+
21
+ Run Officer in the foreground with verbose mode enabled (useful for debugging):
22
+ sudo officer run -- -v
23
+
24
+ Run Officer in the background (production mode) and listen on a specific IP and port:
25
+ sudo officer start -- -h 127.0.0.1 -p 9999
26
+
27
+ - The server listens on 0.0.0.0:11500 by default.
28
+ - All debugging and error output goes to stdout for now. The daemons gem is configured to log stdout.
29
+ - The daemons gem will create a PID file in /var/run and log files in /var/log when using the 'start' option for background mode.
17
30
 
18
31
  ## Ruby Client
19
32
 
data/Rakefile CHANGED
@@ -14,6 +14,7 @@ begin
14
14
  gem.add_development_dependency "json", ">= 0"
15
15
  gem.add_development_dependency "activesupport", ">= 0"
16
16
  gem.add_development_dependency "daemons", ">= 0"
17
+ gem.add_development_dependency "choice", ">= 0"
17
18
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
18
19
  end
19
20
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.3
1
+ 0.4.0
data/bin/officer CHANGED
@@ -3,13 +3,45 @@
3
3
  require 'rubygems'
4
4
  require 'officer'
5
5
 
6
- options = {
6
+ daemon_options = {
7
7
  :dir_mode => :system,
8
8
  :multiple => false,
9
- :monitor => true
9
+ :monitor => true,
10
+ :log_output => true
10
11
  }
11
12
 
13
+ def parse_command_line
14
+ if ARGV.include? '--'
15
+ ARGV.slice! 0..ARGV.index('--')
16
+ end
12
17
 
13
- Daemons.run_proc('officer', options) do
14
- Officer::Server.new.run
18
+ Choice.options do
19
+ option :host do
20
+ short '-h'
21
+ long '--host=HOST'
22
+ desc 'The hostname or IP to bind to (default: 0.0.0.0)'
23
+ end
24
+
25
+ option :port do
26
+ short '-p'
27
+ long '--port=PORT'
28
+ desc 'The port to listen on (default: 11500)'
29
+ cast Integer
30
+ end
31
+
32
+ option :verbose do
33
+ short '-v'
34
+ long '--verbose'
35
+ desc 'Print lock information to stdout every five seconds (default: off)'
36
+ end
37
+
38
+ option :help do
39
+ long '--help'
40
+ end
41
+ end
42
+ end
43
+
44
+ Daemons.run_proc('officer', daemon_options) do
45
+ parse_command_line
46
+ Officer::Server.new(Choice.choices).run
15
47
  end
data/lib/officer/log.rb CHANGED
@@ -21,6 +21,7 @@ module Officer
21
21
  debug e
22
22
  debug e.backtrace.join "\n "
23
23
  debug '-----'
24
+ debug "ARGV: #{ARGV.inspect}"
24
25
  end
25
26
 
26
27
  private
@@ -2,10 +2,11 @@ module Officer
2
2
 
3
3
  class Server
4
4
  def initialize options={}
5
- options.reverse_merge! :port => 11500, :host => '0.0.0.0'
5
+ options.reverse_merge! :port => 11500, :host => '0.0.0.0', :verbose => false
6
6
 
7
7
  @port = options[:port]
8
8
  @host = options[:host]
9
+ @verbose = options[:verbose]
9
10
  end
10
11
 
11
12
  def run
@@ -14,8 +15,10 @@ module Officer
14
15
  end
15
16
 
16
17
  EM::run do
17
- EM::PeriodicTimer.new(5) do
18
- Officer::LockStore.instance.log_state
18
+ if @verbose
19
+ EM::PeriodicTimer.new(5) do
20
+ Officer::LockStore.instance.log_state
21
+ end
19
22
  end
20
23
 
21
24
  EM::start_server @host, @port, Connection::Connection
data/lib/officer.rb CHANGED
@@ -8,6 +8,7 @@ require 'active_support'
8
8
  require 'eventmachine'
9
9
  require 'json'
10
10
  require 'daemons'
11
+ require 'choice'
11
12
 
12
13
  # Application.
13
14
  require 'officer/log'
data/officer.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{officer}
8
- s.version = "0.3.3"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Chad Remesch"]
12
- s.date = %q{2010-02-10}
12
+ s.date = %q{2010-02-11}
13
13
  s.default_executable = %q{officer}
14
14
  s.description = %q{Distributed lock server and client written in Ruby and EventMachine}
15
15
  s.email = %q{chad@remesch.com}
@@ -56,17 +56,20 @@ Gem::Specification.new do |s|
56
56
  s.add_development_dependency(%q<json>, [">= 0"])
57
57
  s.add_development_dependency(%q<activesupport>, [">= 0"])
58
58
  s.add_development_dependency(%q<daemons>, [">= 0"])
59
+ s.add_development_dependency(%q<choice>, [">= 0"])
59
60
  else
60
61
  s.add_dependency(%q<eventmachine>, [">= 0"])
61
62
  s.add_dependency(%q<json>, [">= 0"])
62
63
  s.add_dependency(%q<activesupport>, [">= 0"])
63
64
  s.add_dependency(%q<daemons>, [">= 0"])
65
+ s.add_dependency(%q<choice>, [">= 0"])
64
66
  end
65
67
  else
66
68
  s.add_dependency(%q<eventmachine>, [">= 0"])
67
69
  s.add_dependency(%q<json>, [">= 0"])
68
70
  s.add_dependency(%q<activesupport>, [">= 0"])
69
71
  s.add_dependency(%q<daemons>, [">= 0"])
72
+ s.add_dependency(%q<choice>, [">= 0"])
70
73
  end
71
74
  end
72
75
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: officer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chad Remesch
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-10 00:00:00 -05:00
12
+ date: 2010-02-11 00:00:00 -05:00
13
13
  default_executable: officer
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -52,6 +52,16 @@ dependencies:
52
52
  - !ruby/object:Gem::Version
53
53
  version: "0"
54
54
  version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: choice
57
+ type: :development
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
55
65
  description: Distributed lock server and client written in Ruby and EventMachine
56
66
  email: chad@remesch.com
57
67
  executables: