clogger 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +17 -16
- data/README +2 -2
- data/Rakefile +38 -0
- data/clogger.gemspec +1 -1
- data/ext/clogger_ext/clogger.c +2 -4
- data/lib/clogger.rb +1 -1
- data/lib/clogger/pure.rb +3 -3
- data/test/test_clogger.rb +16 -0
- metadata +3 -3
data/GIT-VERSION-GEN
CHANGED
data/GNUmakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
all:: test
|
2
|
-
|
3
|
-
|
2
|
+
RUBY = ruby
|
3
|
+
RAKE = rake
|
4
4
|
GIT_URL = git://git.bogomips.org/clogger.git
|
5
5
|
|
6
6
|
GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
|
@@ -9,11 +9,11 @@ GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
|
|
9
9
|
-include local.mk
|
10
10
|
|
11
11
|
ifeq ($(DLEXT),) # "so" for Linux
|
12
|
-
DLEXT := $(shell $(
|
12
|
+
DLEXT := $(shell $(RUBY) -rrbconfig -e 'puts Config::CONFIG["DLEXT"]')
|
13
13
|
endif
|
14
14
|
|
15
15
|
ext/clogger_ext/Makefile: ext/clogger_ext/clogger.c ext/clogger_ext/extconf.rb
|
16
|
-
cd ext/clogger_ext && $(
|
16
|
+
cd ext/clogger_ext && $(RUBY) extconf.rb
|
17
17
|
|
18
18
|
ext/clogger_ext/clogger.$(DLEXT): ext/clogger_ext/Makefile
|
19
19
|
$(MAKE) -C ext/clogger_ext
|
@@ -23,10 +23,10 @@ clean:
|
|
23
23
|
$(RM) ext/clogger_ext/Makefile lib/clogger_ext.$(DLEXT)
|
24
24
|
|
25
25
|
test-ext: ext/clogger_ext/clogger.$(DLEXT)
|
26
|
-
$(
|
26
|
+
$(RUBY) -Iext/clogger_ext:lib test/test_clogger.rb
|
27
27
|
|
28
28
|
test-pure:
|
29
|
-
CLOGGER_PURE=t $(
|
29
|
+
CLOGGER_PURE=t $(RUBY) -Ilib test/test_clogger.rb
|
30
30
|
|
31
31
|
test: test-ext test-pure
|
32
32
|
|
@@ -42,8 +42,8 @@ manifest: $(pkg_extra)
|
|
42
42
|
cmp $@+ $@ || mv $@+ $@
|
43
43
|
$(RM) $@+
|
44
44
|
|
45
|
-
NEWS: GIT-VERSION-FILE
|
46
|
-
$(
|
45
|
+
NEWS: GIT-VERSION-FILE .manifest
|
46
|
+
$(RAKE) -s news_rdoc > $@+
|
47
47
|
mv $@+ $@
|
48
48
|
|
49
49
|
SINCE = 0.0.7
|
@@ -63,13 +63,13 @@ doc: .document NEWS ChangeLog
|
|
63
63
|
rdoc -Na -t "$(shell sed -ne '1s/^= //p' README)"
|
64
64
|
install -m644 COPYING doc/COPYING
|
65
65
|
install -m644 $(shell grep '^[A-Z]' .document) doc/
|
66
|
-
$(
|
66
|
+
$(RUBY) -i -p -e \
|
67
67
|
'$$_.gsub!("</title>",%q{\&$(call atom,$(cgit_atom))})' \
|
68
68
|
doc/ChangeLog.html
|
69
|
-
$(
|
69
|
+
$(RUBY) -i -p -e \
|
70
70
|
'$$_.gsub!("</title>",%q{\&$(call atom,$(news_atom))})' \
|
71
71
|
doc/NEWS.html doc/README.html
|
72
|
-
$(
|
72
|
+
$(RAKE) -s news_atom > doc/NEWS.atom.xml
|
73
73
|
cd doc && ln README.html tmp && mv tmp index.html
|
74
74
|
|
75
75
|
# publishes docs to http://clogger.rubyforge.org/
|
@@ -79,7 +79,7 @@ publish_doc:
|
|
79
79
|
git set-file-times
|
80
80
|
$(RM) -r doc
|
81
81
|
$(MAKE) doc
|
82
|
-
rsync -av
|
82
|
+
rsync -av doc/ rubyforge.org:/var/www/gforge-projects/clogger/
|
83
83
|
git ls-files | xargs touch
|
84
84
|
|
85
85
|
ifneq ($(VERSION),)
|
@@ -93,10 +93,10 @@ release_changes := release_changes-$(VERSION)
|
|
93
93
|
release-notes: $(release_notes)
|
94
94
|
release-changes: $(release_changes)
|
95
95
|
$(release_changes):
|
96
|
-
$(
|
96
|
+
$(RAKE) -s release_changes > $@+
|
97
97
|
$(VISUAL) $@+ && test -s $@+ && mv $@+ $@
|
98
98
|
$(release_notes):
|
99
|
-
GIT_URL=$(GIT_URL) $(
|
99
|
+
GIT_URL=$(GIT_URL) $(RUBY) -s release_notes > $@+
|
100
100
|
$(VISUAL) $@+ && test -s $@+ && mv $@+ $@
|
101
101
|
|
102
102
|
# ensures we're actually on the tagged $(VERSION), only used for release
|
@@ -135,9 +135,10 @@ package: $(pkgtgz) $(pkggem)
|
|
135
135
|
|
136
136
|
release: verify package $(release_notes) $(release_changes)
|
137
137
|
rubyforge add_release -f -n $(release_notes) -a $(release_changes) \
|
138
|
-
$(rfproject) $(rfpackage) $(VERSION) $(pkggem)
|
139
|
-
rubyforge add_file \
|
140
138
|
$(rfproject) $(rfpackage) $(VERSION) $(pkgtgz)
|
139
|
+
gem push $(pkggem)
|
140
|
+
rubyforge add_file \
|
141
|
+
$(rfproject) $(rfpackage) $(VERSION) $(pkggem)
|
141
142
|
else
|
142
143
|
gem install-gem: GIT-VERSION-FILE
|
143
144
|
$(MAKE) $@ VERSION=$(GIT_VERSION)
|
data/README
CHANGED
@@ -31,7 +31,7 @@ Clogger may be loaded as Rack middleware in your config.ru:
|
|
31
31
|
require "clogger"
|
32
32
|
use Clogger,
|
33
33
|
:format => Clogger::Format::Combined,
|
34
|
-
:logger => File.open("/path/to/log", "ab")
|
34
|
+
:logger => ::File.open("/path/to/log", "ab")
|
35
35
|
run YourApplication.new
|
36
36
|
|
37
37
|
If you're using Rails 2.3.x or later, in your config/environment.rb
|
@@ -39,7 +39,7 @@ somewhere inside the "Rails::Initializer.run do |config|" block:
|
|
39
39
|
|
40
40
|
config.middleware.use 'Clogger',
|
41
41
|
:format => Clogger::Format::Combined,
|
42
|
-
:logger => File.open("/path/to/log", "ab")
|
42
|
+
:logger => ::File.open("/path/to/log", "ab")
|
43
43
|
|
44
44
|
== VARIABLES
|
45
45
|
|
data/Rakefile
CHANGED
@@ -117,3 +117,41 @@ task :release_notes do
|
|
117
117
|
print "\nChanges:\n\n"
|
118
118
|
puts body
|
119
119
|
end
|
120
|
+
|
121
|
+
desc "post to RAA"
|
122
|
+
task :raa_update do
|
123
|
+
require 'rubygems'
|
124
|
+
require 'net/http'
|
125
|
+
require 'net/netrc'
|
126
|
+
rc = Net::Netrc.locate('clogger-raa') or abort "~/.netrc not found"
|
127
|
+
password = rc.password
|
128
|
+
|
129
|
+
s = Gem::Specification.load('clogger.gemspec')
|
130
|
+
desc = [ s.description.strip ]
|
131
|
+
desc << ""
|
132
|
+
desc << "* #{s.email}"
|
133
|
+
desc << "* #{git_url}"
|
134
|
+
desc << "* #{cgit_url}"
|
135
|
+
desc = desc.join("\n")
|
136
|
+
uri = URI.parse('http://raa.ruby-lang.org/regist.rhtml')
|
137
|
+
form = {
|
138
|
+
:name => s.name,
|
139
|
+
:short_description => s.summary,
|
140
|
+
:version => s.version.to_s,
|
141
|
+
:status => 'experimental',
|
142
|
+
:owner => s.authors.first,
|
143
|
+
:email => s.email,
|
144
|
+
:category_major => 'Library',
|
145
|
+
:category_minor => 'Rack',
|
146
|
+
:url => s.homepage,
|
147
|
+
:download => 'http://rubyforge.org/frs/?group_id=8896',
|
148
|
+
:license => 'LGPLv3',
|
149
|
+
:description_style => 'Plain',
|
150
|
+
:description => desc,
|
151
|
+
:pass => password,
|
152
|
+
:submit => 'Update',
|
153
|
+
}
|
154
|
+
res = Net::HTTP.post_form(uri, form)
|
155
|
+
p res
|
156
|
+
puts res.body
|
157
|
+
end
|
data/clogger.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.required_rubygems_version = Gem::Requirement.new(">= 0")
|
10
10
|
end
|
11
11
|
s.homepage = 'http://clogger.rubyforge.org/'
|
12
|
-
s.authors = ["
|
12
|
+
s.authors = ["cloggers"]
|
13
13
|
s.date = Time.now.utc.strftime('%Y-%m-%d')
|
14
14
|
s.description = %q{
|
15
15
|
Clogger is Rack middleware for logging HTTP requests. The log format
|
data/ext/clogger_ext/clogger.c
CHANGED
@@ -689,10 +689,9 @@ static VALUE ccall(struct clogger *c, VALUE env)
|
|
689
689
|
c->headers = tmp[1];
|
690
690
|
c->body = tmp[2];
|
691
691
|
|
692
|
+
rv = rb_ary_new4(3, tmp);
|
692
693
|
if (c->need_resp && cHeaderHash != rb_obj_class(c->headers)) {
|
693
694
|
c->headers = rb_funcall(cHeaderHash, new_id, 1, tmp[1]);
|
694
|
-
if (OBJ_FROZEN(rv))
|
695
|
-
rv = rb_ary_dup(rv);
|
696
695
|
rb_ary_store(rv, 1, c->headers);
|
697
696
|
}
|
698
697
|
} else {
|
@@ -732,8 +731,7 @@ static VALUE clogger_call(VALUE self, VALUE env)
|
|
732
731
|
}
|
733
732
|
|
734
733
|
rv = ccall(c, env);
|
735
|
-
|
736
|
-
rv = rb_ary_dup(rv);
|
734
|
+
assert(!OBJ_FROZEN(rv) && "frozen response array");
|
737
735
|
rb_ary_store(rv, 2, self);
|
738
736
|
|
739
737
|
return rv;
|
data/lib/clogger.rb
CHANGED
data/lib/clogger/pure.rb
CHANGED
@@ -27,10 +27,10 @@ class Clogger
|
|
27
27
|
end
|
28
28
|
status, headers, body = resp
|
29
29
|
headers = Rack::Utils::HeaderHash.new(headers) if @need_resp
|
30
|
-
if wrap_body
|
30
|
+
if @wrap_body
|
31
31
|
@reentrant = env['rack.multithread']
|
32
32
|
@env, @status, @headers, @body = env, status, headers, body
|
33
|
-
return [ status, headers, reentrant
|
33
|
+
return [ status, headers, @reentrant ? self.dup : self ]
|
34
34
|
end
|
35
35
|
log(env, status, headers)
|
36
36
|
[ status, headers, body ]
|
@@ -39,7 +39,7 @@ class Clogger
|
|
39
39
|
def each
|
40
40
|
@body_bytes_sent = 0
|
41
41
|
@body.each do |part|
|
42
|
-
@body_bytes_sent += part
|
42
|
+
@body_bytes_sent += Rack::Utils.bytesize(part)
|
43
43
|
yield part
|
44
44
|
end
|
45
45
|
ensure
|
data/test/test_clogger.rb
CHANGED
@@ -517,6 +517,22 @@ class TestClogger < Test::Unit::TestCase
|
|
517
517
|
assert_nil body.close
|
518
518
|
end
|
519
519
|
|
520
|
+
def test_clogger_response_frozen
|
521
|
+
response = [ 200, { "AAAA" => "AAAA"}.freeze, [].freeze ].freeze
|
522
|
+
s = StringIO.new("")
|
523
|
+
app = Rack::Builder.new do
|
524
|
+
use Clogger, :logger => s, :format => "$request_time $http_host"
|
525
|
+
run lambda { |env| response }
|
526
|
+
end
|
527
|
+
assert_nothing_raised do
|
528
|
+
3.times do
|
529
|
+
resp = app.call(@req)
|
530
|
+
assert ! resp.frozen?
|
531
|
+
resp.last.each { |x| }
|
532
|
+
end
|
533
|
+
end
|
534
|
+
end
|
535
|
+
|
520
536
|
def test_clogger_body_close_return_value
|
521
537
|
s = ''
|
522
538
|
body = []
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clogger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- cloggers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-07 00:00:00 +00:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|