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