rufus-jig 0.1.9 → 0.1.10
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/CHANGELOG.txt +8 -0
- data/CREDITS.txt +4 -0
- data/LICENSE.txt +1 -1
- data/Rakefile +1 -1
- data/lib/rufus/jig/couch.rb +13 -5
- data/lib/rufus/jig/http.rb +14 -8
- data/lib/rufus/jig/path.rb +1 -1
- data/lib/rufus/jig/version.rb +1 -1
- data/lib/rufus/jig.rb +1 -1
- data/rufus-jig.gemspec +4 -3
- data/test/conc/put_vs_delete.rb +28 -0
- data/test/ct_1_couchdb.rb +1 -1
- metadata +4 -3
data/CHANGELOG.txt
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
|
2
2
|
= rufus-jig CHANGELOG.txt
|
3
3
|
|
4
|
+
|
5
|
+
== rufus-jig - 0.1.10 released 2010/01/06
|
6
|
+
|
7
|
+
- test/con to test/conc (win issue), thanks gauched
|
8
|
+
- made net/http Http thread-safe (serialization through synchronization)
|
9
|
+
- :re_put_ok => false rework (deleting at first)
|
10
|
+
|
11
|
+
|
4
12
|
== rufus-jig - 0.1.9 released 2009/12/29
|
5
13
|
|
6
14
|
- Couch now handling conflict re-get by itself
|
data/CREDITS.txt
CHANGED
data/LICENSE.txt
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
Copyright (c) 2009-
|
2
|
+
Copyright (c) 2009-2010, John Mettraux, jmettraux@gmail.com
|
3
3
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
5
|
of this software and associated documentation files (the "Software"), to deal
|
data/Rakefile
CHANGED
data/lib/rufus/jig/couch.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2009-
|
2
|
+
# Copyright (c) 2009-2010, John Mettraux, jmettraux@gmail.com
|
3
3
|
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
5
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -50,9 +50,8 @@ module Rufus::Jig
|
|
50
50
|
end
|
51
51
|
|
52
52
|
if @opts[:re_put_ok] == false && payload['_rev']
|
53
|
-
|
54
|
-
return
|
55
|
-
return cur if cur['_rev'] != payload['_rev']
|
53
|
+
rr = delete(path, payload['_rev'])
|
54
|
+
return rr unless rr.nil?
|
56
55
|
end
|
57
56
|
|
58
57
|
path = adjust(path)
|
@@ -103,7 +102,16 @@ module Rufus::Jig
|
|
103
102
|
@http.delete(path)
|
104
103
|
end
|
105
104
|
|
106
|
-
r == true
|
105
|
+
if r == true # conflict
|
106
|
+
|
107
|
+
doc = @http.get(adjust(doc_or_path['_id']))
|
108
|
+
doc ? doc : true
|
109
|
+
# returns the doc if present or true if the doc is gone
|
110
|
+
|
111
|
+
else # delete is successful
|
112
|
+
|
113
|
+
nil
|
114
|
+
end
|
107
115
|
end
|
108
116
|
|
109
117
|
protected
|
data/lib/rufus/jig/http.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2009-
|
2
|
+
# Copyright (c) 2009-2010, John Mettraux, jmettraux@gmail.com
|
3
3
|
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
5
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -167,7 +167,7 @@ module Rufus::Jig
|
|
167
167
|
|
168
168
|
return Rufus::Jig.marshal_copy(cached.last) if r.status == 304
|
169
169
|
return nil if method == :get && r.status == 404
|
170
|
-
return true if r.status
|
170
|
+
return true if [ 404, 409 ].include?(r.status)
|
171
171
|
|
172
172
|
raise @error_class.new(r.status, r.body) \
|
173
173
|
if r.status >= 400 && r.status < 600
|
@@ -457,6 +457,7 @@ elsif defined?( EventMachine::HttpRequest )
|
|
457
457
|
|
458
458
|
else
|
459
459
|
|
460
|
+
require 'thread'
|
460
461
|
require 'net/http'
|
461
462
|
|
462
463
|
class Rufus::Jig::HttpResponse
|
@@ -491,6 +492,8 @@ else
|
|
491
492
|
@options[:user_agent] =
|
492
493
|
opts[:user_agent] ||
|
493
494
|
"#{self.class} #{Rufus::Jig::VERSION} (net/http)"
|
495
|
+
|
496
|
+
@mutex = Mutex.new
|
494
497
|
end
|
495
498
|
|
496
499
|
protected
|
@@ -517,16 +520,19 @@ else
|
|
517
520
|
|
518
521
|
def do_request (method, path, data, opts)
|
519
522
|
|
520
|
-
|
523
|
+
@mutex.synchronize do
|
524
|
+
|
525
|
+
path = '/' if path == ''
|
521
526
|
|
522
|
-
|
527
|
+
req = eval("Net::HTTP::#{method.to_s.capitalize}").new(path)
|
523
528
|
|
524
|
-
|
525
|
-
|
529
|
+
req['User-Agent'] = options[:user_agent]
|
530
|
+
opts.each { |k, v| req[k] = v if k.is_a?(String) }
|
526
531
|
|
527
|
-
|
532
|
+
req.body = data ? data : ''
|
528
533
|
|
529
|
-
|
534
|
+
Rufus::Jig::HttpResponse.new(@http.start { |h| h.request(req) })
|
535
|
+
end
|
530
536
|
end
|
531
537
|
end
|
532
538
|
|
data/lib/rufus/jig/path.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2009-
|
2
|
+
# Copyright (c) 2009-2010, John Mettraux, jmettraux@gmail.com
|
3
3
|
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
5
|
# of this software and associated documentation files (the "Software"), to deal
|
data/lib/rufus/jig/version.rb
CHANGED
data/lib/rufus/jig.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2009-
|
2
|
+
# Copyright (c) 2009-2010, John Mettraux, jmettraux@gmail.com
|
3
3
|
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
5
|
# of this software and associated documentation files (the "Software"), to deal
|
data/rufus-jig.gemspec
CHANGED
@@ -5,13 +5,13 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rufus-jig}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.10"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["John Mettraux", "Kenneth Kalmer"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-01-06}
|
13
13
|
s.description = %q{
|
14
|
-
Json
|
14
|
+
Json Interwebs Get.
|
15
15
|
|
16
16
|
An HTTP client, greedy with JSON content, GETting conditionally.
|
17
17
|
|
@@ -38,6 +38,7 @@ Gem::Specification.new do |s|
|
|
38
38
|
"lib/rufus/jig/version.rb",
|
39
39
|
"rufus-jig.gemspec",
|
40
40
|
"test/base.rb",
|
41
|
+
"test/conc/put_vs_delete.rb",
|
41
42
|
"test/couch_base.rb",
|
42
43
|
"test/ct_0_couch.rb",
|
43
44
|
"test/ct_1_couchdb.rb",
|
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
$:.unshift('lib')
|
3
|
+
|
4
|
+
require 'patron'
|
5
|
+
require 'yajl'
|
6
|
+
require 'rufus/jig'
|
7
|
+
|
8
|
+
C0 = Rufus::Jig::Couch.new('127.0.0.1', 5984, 'test0', :re_put_ok => false)
|
9
|
+
C1 = Rufus::Jig::Couch.new('127.0.0.1', 5984, 'test0', :re_put_ok => false)
|
10
|
+
|
11
|
+
d = C0.get('nada')
|
12
|
+
C0.delete(d) if d
|
13
|
+
|
14
|
+
C0.put({ '_id' => 'nada', 'where' => 'London' })
|
15
|
+
d = C0.get('nada')
|
16
|
+
|
17
|
+
t1 = Thread.new do
|
18
|
+
p [ Thread.current.object_id, :delete, d['_rev'], C1.delete(d) ]
|
19
|
+
end
|
20
|
+
t0 = Thread.new do
|
21
|
+
p [ Thread.current.object_id, :put, d['_rev'], C0.put(d) ]
|
22
|
+
end
|
23
|
+
|
24
|
+
sleep 0.500
|
25
|
+
|
26
|
+
p C0.get('nada')
|
27
|
+
p C1.get('nada')
|
28
|
+
|
data/test/ct_1_couchdb.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rufus-jig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Mettraux
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
13
|
+
date: 2010-01-06 00:00:00 +09:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
- !ruby/object:Gem::Version
|
44
44
|
version: "0"
|
45
45
|
version:
|
46
|
-
description: "\n Json
|
46
|
+
description: "\n Json Interwebs Get.\n\n An HTTP client, greedy with JSON content, GETting conditionally.\n\n Uses Patron and Yajl-ruby whenever possible.\n "
|
47
47
|
email: jmettraux@gmail.com
|
48
48
|
executables: []
|
49
49
|
|
@@ -68,6 +68,7 @@ files:
|
|
68
68
|
- lib/rufus/jig/version.rb
|
69
69
|
- rufus-jig.gemspec
|
70
70
|
- test/base.rb
|
71
|
+
- test/conc/put_vs_delete.rb
|
71
72
|
- test/couch_base.rb
|
72
73
|
- test/ct_0_couch.rb
|
73
74
|
- test/ct_1_couchdb.rb
|