clogger 0.1.0 → 0.2.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/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
|