yup 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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"