yup 0.0.2 → 0.0.3

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.rdoc CHANGED
@@ -21,7 +21,6 @@ Now problem of availability of errbit is assigned to the yupd.
21
21
  == Roadmap to 0.1
22
22
 
23
23
  * Daemonize
24
- * Logger
25
24
  * Preforking
26
25
  * Persistent HTTP requests queue
27
26
  * A configurable map of different delegating rules
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
data/bin/yupd CHANGED
@@ -16,7 +16,8 @@ Options:
16
16
  --status-code <code> Send status code to a client on request (default 200)
17
17
  --resend-delay <seconds> Resend failed requests in seconds (default 5.0)
18
18
  --watermark <number> Maximum of concurrent requests (default 100)
19
- --loglevel <level> Logging severity (default info). Available log levels: debug, warn, info.
19
+ --loglevel <level> Logging severity (default fatal).
20
+ Available log levels: fatal, error, warn, info, debug.
20
21
 
21
22
  Examples:
22
23
  yupd --listen 0.0.0.0:8081 --status-code 201 errbit.host.somewhere
@@ -24,6 +25,14 @@ Examples:
24
25
  EOF
25
26
  end
26
27
 
28
+ LEVELS = {
29
+ "fatal" => Logger::FATAL,
30
+ "error" => Logger::ERROR,
31
+ "warn" => Logger::WARN,
32
+ "info" => Logger::INFO,
33
+ "debug" => Logger::DEBUG
34
+ }.freeze
35
+
27
36
  opts = GetoptLong.new(*[['--help', '-h', GetoptLong::NO_ARGUMENT],
28
37
  ['--listen', '-l', GetoptLong::REQUIRED_ARGUMENT],
29
38
  ['--status-code', GetoptLong::REQUIRED_ARGUMENT],
@@ -31,12 +40,8 @@ opts = GetoptLong.new(*[['--help', '-h', GetoptLong::NO_ARGUMENT],
31
40
  ['--watermark', GetoptLong::REQUIRED_ARGUMENT],
32
41
  ['--loglevel', GetoptLong::REQUIRED_ARGUMENT],
33
42
  ])
34
- config = {}
35
- levels = {
36
- "info" => Logger::INFO,
37
- "warn" => Logger::WARN,
38
- "debug" => Logger::DEBUG
39
- }
43
+ config = {:loglevel => LEVELS["fatal"]}
44
+
40
45
  opts.each do |opt, arg|
41
46
  case opt
42
47
  when '--help', '-h'
@@ -51,12 +56,12 @@ opts.each do |opt, arg|
51
56
  when '--watermark'
52
57
  config[:watermark] = arg.to_i
53
58
  when '--loglevel'
54
- if levels.key? arg.to_s
55
- config[:loglevel] = levels[arg.to_s]
59
+ if LEVELS.has_key?(arg)
60
+ config[:loglevel] = LEVELS[arg]
56
61
  else
57
62
  puts "ERROR: Wrong log level"
58
63
  usage
59
- exit 0
64
+ exit 1
60
65
  end
61
66
  end
62
67
  end
@@ -69,6 +74,7 @@ end
69
74
 
70
75
  config[:forward_to] = ARGV.shift
71
76
 
77
+ Yup.logger.level = config[:loglevel]
72
78
  Yup.watermark = config[:watermark] if config.has_key?(:watermark)
73
79
  Yup.resend_delay = config[:resend_delay] if config.has_key?(:resend_delay)
74
80
  Yup.run(config)
data/lib/yup.rb CHANGED
@@ -14,19 +14,20 @@ module Yup
14
14
  def self.watermark; @@watermark end
15
15
  def self.watermark=(seconds); @@watermark = seconds end
16
16
 
17
+ @@logger = Logger.new(STDOUT)
18
+ def self.logger; @@logger end
19
+ def self.logger=(logger); @@logger = logger end
20
+
17
21
  def self.run(config)
18
22
  host = config[:listen_host] || 'localhost'
19
23
  port = config[:listen_port] || 8080
20
24
  status_code = config[:status_code] || 200
21
25
  forward_to = config[:forward_to]
22
26
 
23
- logger = Logger.new(STDOUT)
24
- logger.level = config[:loglevel]
25
-
26
27
  EventMachine::run do
27
28
  EventMachine::start_server(host, port, RequestHandler,
28
29
  forward_to, status_code)
29
- logger.info "listening on #{host}:#{port}"
30
+ logger.info { "listening on #{host}:#{port}" }
30
31
  end
31
32
  end
32
33
  end
@@ -6,6 +6,8 @@ module Yup
6
6
  @parser = parser
7
7
  @body = body
8
8
  @forward_to = forward_to
9
+
10
+ @logger = Yup.logger
9
11
  end
10
12
 
11
13
  def run
@@ -21,18 +23,18 @@ module Yup
21
23
  Yup.watermark += 1
22
24
 
23
25
  if http.response_header.status / 100 == 2
24
- logger.info '--- SUCCESS'
26
+ @logger.info '--- SUCCESS'
25
27
  else
26
- logger.info '--- FAIL'
27
- # logger.debug http.response_header.inspect
28
- # logger.debug http.response
29
- logger.debug http
28
+ @logger.info '--- FAIL'
29
+ @logger.debug { http.inspect }
30
+ @logger.debug { http.response_header.inspect }
31
+ @logger.debug { http.response.inspect }
30
32
  end
31
33
  end
32
34
 
33
35
  http.errback do
34
- logger.info '--- ERROR'
35
- logger.debug http
36
+ @logger.info '--- ERROR'
37
+ @logger.debug { http.inspect }
36
38
 
37
39
  EventMachine.add_timer(Yup.resend_delay) { self.run }
38
40
  end
@@ -8,7 +8,9 @@ module Yup
8
8
  def initialize(forward_to, status_code)
9
9
  @forward_to = forward_to
10
10
  @status_code = status_code
11
- @chunks = []
11
+
12
+ @logger = Yup.logger
13
+ @chunks = []
12
14
  end
13
15
 
14
16
  def post_init
@@ -28,11 +30,11 @@ module Yup
28
30
  end
29
31
 
30
32
  def on_message_complete
31
- logger.info "-- got request"
32
- logger.info "HTTP version: " + @parser.http_version
33
- logger.info "HTTP method : " + @parser.http_method # for requests
34
- logger.info "HTTP request_url : " + @parser.request_url
35
- logger.debug "HTTP headers : " + @parser.headers
33
+ @logger.info "-- got request"
34
+ @logger.info { "HTTP version : " + @parser.http_version.join('.') }
35
+ @logger.info { "HTTP method : " + @parser.http_method }
36
+ @logger.info { "HTTP request_url : " + @parser.request_url }
37
+ @logger.debug { "HTTP headers : " + @parser.headers.inspect }
36
38
 
37
39
  resp = WEBrick::HTTPResponse.new(:HTTPVersion => '1.1')
38
40
  resp.status = @status_code
@@ -46,7 +48,7 @@ module Yup
46
48
  RequestForwarder.new(@parser, @body, @forward_to).run
47
49
  end
48
50
  else
49
- logger.error "-- watermark is reached, drop"
51
+ @logger.error "-- watermark is reached, drop"
50
52
  end
51
53
  end
52
54
  end
data/yup.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{yup}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Denis Sukhonin"]
12
- s.date = %q{2011-08-16}
12
+ s.date = %q{2011-08-17}
13
13
  s.default_executable = %q{yupd}
14
14
  s.description = %q{Just answers 200 (or specified) to a client and asynchronously forwards HTTP request to a configured host}
15
15
  s.email = %q{d.sukhonin@gmail.com}
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 2
9
- version: 0.0.2
8
+ - 3
9
+ version: 0.0.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Denis Sukhonin
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-08-16 00:00:00 +04:00
17
+ date: 2011-08-17 00:00:00 +04:00
18
18
  default_executable: yupd
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -165,7 +165,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
165
165
  requirements:
166
166
  - - ">="
167
167
  - !ruby/object:Gem::Version
168
- hash: -1930386845878587074
168
+ hash: -3474122509911024601
169
169
  segments:
170
170
  - 0
171
171
  version: "0"