makura 2010.08.26 → 2011.01.21
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/doc/AUTHORS +1 -1
- data/doc/CHANGELOG +24 -0
- data/lib/makura.rb +21 -2
- data/lib/makura/error.rb +1 -0
- data/lib/makura/layout.rb +3 -2
- data/lib/makura/model.rb +1 -1
- data/lib/makura/server.rb +3 -11
- data/lib/makura/version.rb +1 -1
- data/makura.gemspec +2 -2
- metadata +5 -5
data/doc/AUTHORS
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Following persons have contributed to makura.
|
2
2
|
(Sorted by number of submitted patches, then alphabetically)
|
3
3
|
|
4
|
-
|
4
|
+
88 Michael Fellinger <m.fellinger@gmail.com>
|
5
5
|
8 Tadahiko Uehara <kikofx@gmail.com>
|
6
6
|
2 Preston Marshall <preston@synergy-solutions.biz>
|
data/doc/CHANGELOG
CHANGED
@@ -1,3 +1,27 @@
|
|
1
|
+
[f605cce | Thu Jan 20 16:12:17 UTC 2011] Michael Fellinger <m.fellinger@gmail.com>
|
2
|
+
|
3
|
+
* Move Makura::Server#paramify to Makura::paramify to allow reuse
|
4
|
+
|
5
|
+
[c136984 | Tue Oct 12 11:20:18 UTC 2010] Michael Fellinger <m.fellinger@gmail.com>
|
6
|
+
|
7
|
+
* Fix validation in Model#save, it checked for the wrong method name.
|
8
|
+
|
9
|
+
[b236bcb | Mon Oct 04 13:18:39 UTC 2010] Michael Fellinger <m.fellinger@gmail.com>
|
10
|
+
|
11
|
+
* design is not an optional argument
|
12
|
+
|
13
|
+
[ea03df7 | Thu Sep 30 01:02:39 UTC 2010] Michael Fellinger <m.fellinger@gmail.com>
|
14
|
+
|
15
|
+
* Make escape compatible with unicode
|
16
|
+
|
17
|
+
[37c2281 | Tue Sep 28 11:15:21 UTC 2010] Michael Fellinger <m.fellinger@gmail.com>
|
18
|
+
|
19
|
+
* Allow for _sum _count and _stats as builtin functions
|
20
|
+
|
21
|
+
[afd5ba8 | Tue Sep 28 11:15:08 UTC 2010] Michael Fellinger <m.fellinger@gmail.com>
|
22
|
+
|
23
|
+
* Add ServerBrokeConnection to exceptions
|
24
|
+
|
1
25
|
[b7479a6 | Wed Aug 25 16:26:05 UTC 2010] Michael Fellinger <m.fellinger@gmail.com>
|
2
26
|
|
3
27
|
* Version 2010.08.26
|
data/lib/makura.rb
CHANGED
@@ -30,16 +30,35 @@ require 'makura/layout'
|
|
30
30
|
module Makura
|
31
31
|
CHARS = (48..128).map{|c| c.chr}.grep(/[[:alnum:]]/)
|
32
32
|
MOD = CHARS.size
|
33
|
+
JSON_PARAMS = %w[key startkey endkey]
|
33
34
|
|
34
35
|
module_function
|
35
36
|
|
36
37
|
# From Rack
|
37
38
|
def escape(s)
|
38
|
-
s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/
|
39
|
-
'%'+$1.unpack('H2'
|
39
|
+
s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/u) {
|
40
|
+
'%'+$1.unpack('H2'*bytesize($1)).join('%').upcase
|
40
41
|
}.tr(' ', '+')
|
41
42
|
end
|
42
43
|
|
44
|
+
def paramify(hash)
|
45
|
+
hash.map{|k,v|
|
46
|
+
k = k.to_s
|
47
|
+
v = v.to_json if JSON_PARAMS.include?(k)
|
48
|
+
"#{escape(k)}=#{escape(v)}"
|
49
|
+
}.join('&')
|
50
|
+
end
|
51
|
+
|
52
|
+
if "".respond_to?(:bytesize)
|
53
|
+
def bytesize(string)
|
54
|
+
string.bytesize
|
55
|
+
end
|
56
|
+
else
|
57
|
+
def bytesize(string)
|
58
|
+
string.size
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
43
62
|
def pretty_from_md5(md5)
|
44
63
|
id = md5.to_i(16)
|
45
64
|
o = []
|
data/lib/makura/error.rb
CHANGED
@@ -4,6 +4,7 @@ module Makura
|
|
4
4
|
class ConnectionRefused < Error; end
|
5
5
|
class RequestFailed < Error; end
|
6
6
|
class ResourceNotFound < RequestFailed; end
|
7
|
+
class ServerBrokeConnection < RequestFailed; end
|
7
8
|
class Conflict < RequestFailed; end
|
8
9
|
class MissingRevision < RequestFailed; end
|
9
10
|
class BadRequest < RequestFailed; end
|
data/lib/makura/layout.rb
CHANGED
@@ -7,7 +7,7 @@ module Makura
|
|
7
7
|
File.join(Makura::ROOT, '../couch')
|
8
8
|
]
|
9
9
|
|
10
|
-
def initialize(name, design
|
10
|
+
def initialize(name, design)
|
11
11
|
@name, @design = name, design
|
12
12
|
@design[name] = self
|
13
13
|
@map = @reduce = nil
|
@@ -37,7 +37,8 @@ module Makura
|
|
37
37
|
def common_load(type, file_or_function)
|
38
38
|
return unless file_or_function
|
39
39
|
|
40
|
-
|
40
|
+
case file_or_function
|
41
|
+
when /function\(.*\)/, /^_(sum|count|stats)$/
|
41
42
|
function = file_or_function
|
42
43
|
else
|
43
44
|
parts = file_or_function.to_s.split('::')
|
data/lib/makura/model.rb
CHANGED
data/lib/makura/server.rb
CHANGED
@@ -145,6 +145,8 @@ module Makura
|
|
145
145
|
return raw
|
146
146
|
rescue RestClient::RequestFailed => ex
|
147
147
|
raise appropriate_error(ex)
|
148
|
+
rescue RestClient::ServerBrokeConnection => ex
|
149
|
+
raise Error::ServerBrokeConnection, request[:url], ex.backtrace
|
148
150
|
rescue RestClient::ResourceNotFound => ex
|
149
151
|
raise Error::ResourceNotFound, request[:url], ex.backtrace
|
150
152
|
rescue Errno::ECONNREFUSED
|
@@ -183,20 +185,10 @@ module Makura
|
|
183
185
|
end
|
184
186
|
end
|
185
187
|
|
186
|
-
JSON_PARAMS = %w[key startkey endkey]
|
187
|
-
|
188
|
-
def paramify(hash)
|
189
|
-
hash.map{|k,v|
|
190
|
-
k = k.to_s
|
191
|
-
v = v.to_json if JSON_PARAMS.include?(k)
|
192
|
-
"#{Makura.escape(k)}=#{Makura.escape(v)}"
|
193
|
-
}.join('&')
|
194
|
-
end
|
195
|
-
|
196
188
|
def uri(path = '/', params = {})
|
197
189
|
uri = @uri.dup
|
198
190
|
uri.path = (path[0,1] == '/' ? path : "/#{path}").squeeze('/')
|
199
|
-
uri.query = paramify(params) unless params.empty?
|
191
|
+
uri.query = Makura.paramify(params) unless params.empty?
|
200
192
|
uri
|
201
193
|
end
|
202
194
|
end
|
data/lib/makura/version.rb
CHANGED
data/makura.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{makura}
|
5
|
-
s.version = "
|
5
|
+
s.version = "2011.01.21"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Michael 'manveru' Fellinger"]
|
9
|
-
s.date = %q{
|
9
|
+
s.date = %q{2011-01-21}
|
10
10
|
s.default_executable = %q{makura}
|
11
11
|
s.email = %q{m.fellinger@gmail.com}
|
12
12
|
s.executables = ["makura"]
|
metadata
CHANGED
@@ -3,10 +3,10 @@ name: makura
|
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
|
-
-
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version:
|
6
|
+
- 2011
|
7
|
+
- 1
|
8
|
+
- 21
|
9
|
+
version: 2011.01.21
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Michael 'manveru' Fellinger
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date:
|
17
|
+
date: 2011-01-21 00:00:00 +09:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|