fauna 1.1.1 → 1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG +2 -0
- data/Manifest +2 -0
- data/README.md +29 -7
- data/Rakefile +4 -1
- data/fauna-ruby.pem +21 -0
- data/fauna.gemspec +14 -10
- data/lib/fauna.rb +2 -1
- data/lib/fauna/connection.rb +23 -37
- data/lib/fauna/rails.rb +7 -7
- data/lib/fauna/resource.rb +11 -0
- data/lib/fauna/set.rb +53 -14
- data/lib/fauna/util.rb +0 -10
- data/test/class_test.rb +1 -27
- data/test/connection_test.rb +14 -0
- data/test/database_test.rb +15 -13
- data/test/query_test.rb +44 -0
- data/test/set_test.rb +3 -25
- data/test/test_helper.rb +9 -4
- metadata +41 -21
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
OTc2NGU4ZGEyZmI5NjNmYzgyNDY5MGM4YWFhYTEwMDg4YmMyNWM5Yw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MjFlMGZmNDYyZWNiMDM0ODU5MjkxNTY0NDkzYjQ4ZjA0MmM3ZmM3YQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
Y2ZjYWVkMmU3MzY2ZmRhZTY2YjRiNWMzMDA2Yzc5NjkzODJjZTY2YzlmOThk
|
10
|
+
NzBkNDQ4ZDVhOWIzYjk5MGQwYjU0MjRiMGMzODllOGQyN2ZhNmFiNGQ5ZjZm
|
11
|
+
ZTBjZjI3ZmFhY2NkMDczMjdiM2MxN2NjNTIzMDdmZWZlM2QyMWY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YTk2Njk2ODIyMGZmN2NkYjZjZDAyZGJiZWM0NWVkOTFjMGRjZmQ5ZTQ0MTE1
|
14
|
+
NjBkN2JkMDdjZDJkNWMzZWJhNTllODNjOWUwY2RmMjdmZmNhOWYwMDkzNWI5
|
15
|
+
MzhjNTczNTk1NDE3NzkwZGJhNTgzMjliMTYxODQ0ZjFhMWIwZmY=
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/CHANGELOG
CHANGED
data/Manifest
CHANGED
@@ -4,6 +4,7 @@ LICENSE
|
|
4
4
|
Manifest
|
5
5
|
README.md
|
6
6
|
Rakefile
|
7
|
+
fauna-ruby.pem
|
7
8
|
fauna.gemspec
|
8
9
|
lib/fauna.rb
|
9
10
|
lib/fauna/cache.rb
|
@@ -19,6 +20,7 @@ test/class_test.rb
|
|
19
20
|
test/client_test.rb
|
20
21
|
test/connection_test.rb
|
21
22
|
test/database_test.rb
|
23
|
+
test/query_test.rb
|
22
24
|
test/readme_test.rb
|
23
25
|
test/set_test.rb
|
24
26
|
test/test_helper.rb
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Fauna
|
2
2
|
|
3
|
-
Ruby client for
|
3
|
+
Experimental Ruby client for [Fauna](http://fauna.org).
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -36,7 +36,7 @@ All API requests start with an instance of `Fauna::Connection`.
|
|
36
36
|
Creating a connection requires either a token, a server key, or a
|
37
37
|
client key.
|
38
38
|
|
39
|
-
Let's use a server key we got from our [Fauna Cloud console](https://fauna.org/
|
39
|
+
Let's use a server key we got from our [Fauna Cloud console](https://fauna.org/account/databases):
|
40
40
|
|
41
41
|
```ruby
|
42
42
|
server_key = 'ls8AkXLdakAAAALPAJFy3LvQAAGwDRAS_Prjy6O8VQBfQAlZzwAA'
|
@@ -106,6 +106,20 @@ Fauna::Client.context($fauna) do
|
|
106
106
|
end
|
107
107
|
```
|
108
108
|
|
109
|
+
Fauna resources must be created and accessed by ref, i.e.
|
110
|
+
|
111
|
+
```ruby
|
112
|
+
pig = Fauna::Resource.create 'classes/pigs'
|
113
|
+
pig.data['name'] = 'Henwen'
|
114
|
+
pig.save
|
115
|
+
pig.ref # => 'classes/pigs/42471470493859841'
|
116
|
+
|
117
|
+
# and later...
|
118
|
+
|
119
|
+
pig = Fauna::Resource.find 'classes/pigs/42471470493859841'
|
120
|
+
# do something with this pig...
|
121
|
+
````
|
122
|
+
|
109
123
|
## Rails Usage
|
110
124
|
|
111
125
|
Fauna provides a Rails helper that sets up a default context in
|
@@ -115,7 +129,7 @@ controllers, based on credentials in `config/fauna.yml`:
|
|
115
129
|
development:
|
116
130
|
email: taran@example.com
|
117
131
|
password: secret
|
118
|
-
|
132
|
+
secret: secret_key
|
119
133
|
test:
|
120
134
|
email: taran@example.com
|
121
135
|
password: secret
|
@@ -131,12 +145,20 @@ Then, in `config/initializers/fauna.rb`:
|
|
131
145
|
require "fauna/rails"
|
132
146
|
```
|
133
147
|
|
148
|
+
## Running Tests
|
149
|
+
|
150
|
+
You can run tests against Fauna Cloud. Set the `FAUNA_ROOT_KEY` environment variable to your CGI-escaped email and password, joined by a `:`. Then run `rake`:
|
151
|
+
|
152
|
+
```bash
|
153
|
+
export FAUNA_ROOT_KEY="test%40fauna.org:secret"
|
154
|
+
rake
|
155
|
+
```
|
156
|
+
|
134
157
|
## Further Reading
|
135
158
|
|
136
|
-
Please see the Fauna
|
137
|
-
|
138
|
-
|
139
|
-
more examples.
|
159
|
+
Please see the Fauna REST Documentation for a complete API reference,
|
160
|
+
or look in [`/test`](https://github.com/fauna/fauna-ruby/tree/master/test)
|
161
|
+
for more examples.
|
140
162
|
|
141
163
|
## Contributing
|
142
164
|
|
data/Rakefile
CHANGED
@@ -5,7 +5,10 @@ Echoe.new("fauna") do |p|
|
|
5
5
|
p.project = "fauna"
|
6
6
|
p.summary = "Official Ruby client for the Fauna API."
|
7
7
|
p.retain_gemspec = true
|
8
|
-
p.
|
8
|
+
p.require_signed
|
9
|
+
p.certificate_chain = ["fauna-ruby.pem"]
|
10
|
+
p.licenses = ["Mozilla Public License, Version 2.0 (MPL2)"]
|
11
|
+
p.dependencies = ["typhoeus", "json"]
|
9
12
|
p.development_dependencies = ["mocha", "echoe", "minitest"]
|
10
13
|
end
|
11
14
|
|
data/fauna-ruby.pem
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDaDCCAlCgAwIBAgIBATANBgkqhkiG9w0BAQUFADA9MQ0wCwYDVQQDDARldmFu
|
3
|
+
MRgwFgYKCZImiZPyLGQBGRYIY2xvdWRidXIxEjAQBgoJkiaJk/IsZAEZFgJzdDAe
|
4
|
+
Fw0xMzExMDQyMDI1MDVaFw0xNDExMDQyMDI1MDVaMD0xDTALBgNVBAMMBGV2YW4x
|
5
|
+
GDAWBgoJkiaJk/IsZAEZFghjbG91ZGJ1cjESMBAGCgmSJomT8ixkARkWAnN0MIIB
|
6
|
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuG4q2IdTtlc7/IJkWPnbOAFt
|
7
|
+
ysKc3XmLHsjeSXXSPdQ1mb2cDXvyDS8TkzjrgDoJ96RR2xrh7bfkHAMJhSVMhsPM
|
8
|
+
rnYS7fDs//X1h6fRYBjjhqGeQhCL1xrS5/I4vKb7AjgFnuUbMZ/H0+ic2Ic2zTnZ
|
9
|
+
jttSQZ/QOlYyctrYoTzAFdPwL+dOxskOyAmAbtV/pV3owcXpChRT/tphC7u69sOk
|
10
|
+
+IjWsMwrBCbEdj/Jmh4a52QntAwPWx4Krt0zm8eV3/UjSObB3BR1pZ/i5IsSLPs1
|
11
|
+
lwMA6ywbfxBTP59XcgAyhfV3rRQXb+vjpf7OLuOCJOUIN8GEwb5HNjFo/UVdiwID
|
12
|
+
AQABo3MwcTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUbTCqyydn
|
13
|
+
0Rm6nngf15KtCEMc37swGwYDVR0RBBQwEoEQZXZhbkBjbG91ZGJ1ci5zdDAbBgNV
|
14
|
+
HRIEFDASgRBldmFuQGNsb3VkYnVyLnN0MA0GCSqGSIb3DQEBBQUAA4IBAQBggGGb
|
15
|
+
0AoyF0QofzkPImuhN1UF6eG/RdYOHqiUovuRN/9IblyKAaZAIl1mIspfCav8EVwo
|
16
|
+
SC6vz4OaIVpS7QdI04oLNHxhmC6C5TTBONtddDl93M+9uWVipD5uVPktcHWG+bKn
|
17
|
+
2L1lUykQXr8ra45TqAUZ/P+Yv76U8kUsVG2HE5gl/CgB5+V1qkpn5M4CADsvSvPA
|
18
|
+
qEATZvw+KUzzMCUiVzq+T6lDrrCt+sD3NZlvG4BD2PpQuPtDf1i61DUc+5s2Nwm2
|
19
|
+
t4uqNF7swBWS0n40/hmn5u8pT2JVsuwam79GGhJmNfCdPCcCbgphroexRcrwdURX
|
20
|
+
ly00Xdf1gDVBxRoR
|
21
|
+
-----END CERTIFICATE-----
|
data/fauna.gemspec
CHANGED
@@ -1,42 +1,46 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
# stub: fauna 1.2 ruby lib
|
2
3
|
|
3
4
|
Gem::Specification.new do |s|
|
4
5
|
s.name = "fauna"
|
5
|
-
s.version = "1.
|
6
|
+
s.version = "1.2"
|
6
7
|
|
7
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
9
|
s.authors = ["Fauna, Inc."]
|
9
|
-
s.
|
10
|
+
s.cert_chain = ["/Users/eweaver/fauna/fauna-ruby/fauna-ruby.pem"]
|
11
|
+
s.date = "2013-11-04"
|
10
12
|
s.description = "Official Ruby client for the Fauna API."
|
11
13
|
s.email = ""
|
12
14
|
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.md", "lib/fauna.rb", "lib/fauna/cache.rb", "lib/fauna/client.rb", "lib/fauna/connection.rb", "lib/fauna/named_resource.rb", "lib/fauna/rails.rb", "lib/fauna/resource.rb", "lib/fauna/set.rb", "lib/fauna/util.rb", "lib/tasks/fauna.rake"]
|
13
|
-
s.files = ["CHANGELOG", "Gemfile", "LICENSE", "Manifest", "README.md", "Rakefile", "fauna.gemspec", "lib/fauna.rb", "lib/fauna/cache.rb", "lib/fauna/client.rb", "lib/fauna/connection.rb", "lib/fauna/named_resource.rb", "lib/fauna/rails.rb", "lib/fauna/resource.rb", "lib/fauna/set.rb", "lib/fauna/util.rb", "lib/tasks/fauna.rake", "test/class_test.rb", "test/client_test.rb", "test/connection_test.rb", "test/database_test.rb", "test/readme_test.rb", "test/set_test.rb", "test/test_helper.rb"]
|
15
|
+
s.files = ["CHANGELOG", "Gemfile", "LICENSE", "Manifest", "README.md", "Rakefile", "fauna-ruby.pem", "fauna.gemspec", "lib/fauna.rb", "lib/fauna/cache.rb", "lib/fauna/client.rb", "lib/fauna/connection.rb", "lib/fauna/named_resource.rb", "lib/fauna/rails.rb", "lib/fauna/resource.rb", "lib/fauna/set.rb", "lib/fauna/util.rb", "lib/tasks/fauna.rake", "test/class_test.rb", "test/client_test.rb", "test/connection_test.rb", "test/database_test.rb", "test/query_test.rb", "test/readme_test.rb", "test/set_test.rb", "test/test_helper.rb"]
|
14
16
|
s.homepage = "http://fauna.github.com/fauna/"
|
15
|
-
s.
|
17
|
+
s.licenses = ["Mozilla Public License, Version 2.0 (MPL2)"]
|
18
|
+
s.rdoc_options = ["--line-numbers", "--title", "Fauna", "--main", "README.md"]
|
16
19
|
s.require_paths = ["lib"]
|
17
20
|
s.rubyforge_project = "fauna"
|
18
|
-
s.rubygems_version = "1.
|
21
|
+
s.rubygems_version = "2.1.10"
|
22
|
+
s.signing_key = "/Users/eweaver/cloudburst/configuration/gem_certificates/gem-private_key.pem"
|
19
23
|
s.summary = "Official Ruby client for the Fauna API."
|
20
|
-
s.test_files = ["test/class_test.rb", "test/client_test.rb", "test/connection_test.rb", "test/database_test.rb", "test/readme_test.rb", "test/set_test.rb", "test/test_helper.rb"]
|
24
|
+
s.test_files = ["test/class_test.rb", "test/client_test.rb", "test/connection_test.rb", "test/database_test.rb", "test/query_test.rb", "test/readme_test.rb", "test/set_test.rb", "test/test_helper.rb"]
|
21
25
|
|
22
26
|
if s.respond_to? :specification_version then
|
23
|
-
s.specification_version =
|
27
|
+
s.specification_version = 4
|
24
28
|
|
25
29
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
26
|
-
s.add_runtime_dependency(%q<
|
30
|
+
s.add_runtime_dependency(%q<typhoeus>, [">= 0"])
|
27
31
|
s.add_runtime_dependency(%q<json>, [">= 0"])
|
28
32
|
s.add_development_dependency(%q<mocha>, [">= 0"])
|
29
33
|
s.add_development_dependency(%q<echoe>, [">= 0"])
|
30
34
|
s.add_development_dependency(%q<minitest>, [">= 0"])
|
31
35
|
else
|
32
|
-
s.add_dependency(%q<
|
36
|
+
s.add_dependency(%q<typhoeus>, [">= 0"])
|
33
37
|
s.add_dependency(%q<json>, [">= 0"])
|
34
38
|
s.add_dependency(%q<mocha>, [">= 0"])
|
35
39
|
s.add_dependency(%q<echoe>, [">= 0"])
|
36
40
|
s.add_dependency(%q<minitest>, [">= 0"])
|
37
41
|
end
|
38
42
|
else
|
39
|
-
s.add_dependency(%q<
|
43
|
+
s.add_dependency(%q<typhoeus>, [">= 0"])
|
40
44
|
s.add_dependency(%q<json>, [">= 0"])
|
41
45
|
s.add_dependency(%q<mocha>, [">= 0"])
|
42
46
|
s.add_dependency(%q<echoe>, [">= 0"])
|
data/lib/fauna.rb
CHANGED
data/lib/fauna/connection.rb
CHANGED
@@ -20,16 +20,16 @@ module Fauna
|
|
20
20
|
when 200..299
|
21
21
|
res
|
22
22
|
when 400
|
23
|
-
json = JSON.parse(res)
|
23
|
+
json = JSON.parse(res.body)
|
24
24
|
raise BadRequest.new(json['error'], json['param_errors'])
|
25
25
|
when 401
|
26
|
-
raise Unauthorized, JSON.parse(res)['error']
|
26
|
+
raise Unauthorized, JSON.parse(res.body)['error']
|
27
27
|
when 404
|
28
|
-
raise NotFound, JSON.parse(res)['error']
|
28
|
+
raise NotFound, JSON.parse(res.body)['error']
|
29
29
|
when 405
|
30
|
-
raise NotAllowed, JSON.parse(res)['error']
|
30
|
+
raise NotAllowed, JSON.parse(res.body)['error']
|
31
31
|
else
|
32
|
-
raise NetworkError, res
|
32
|
+
raise NetworkError, res.body
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -39,22 +39,13 @@ module Fauna
|
|
39
39
|
@logger = params[:logger] || nil
|
40
40
|
@domain = params[:domain] || "rest1.fauna.org"
|
41
41
|
@scheme = params[:scheme] || "https"
|
42
|
-
@port = params[:port] || 80
|
42
|
+
@port = params[:port] || (@scheme == "https" ? 443 : 80)
|
43
43
|
|
44
44
|
if ENV["FAUNA_DEBUG"]
|
45
45
|
@logger = Logger.new(STDERR)
|
46
46
|
@debug = true
|
47
47
|
end
|
48
|
-
|
49
|
-
# Check credentials from least to most privileged, in case
|
50
|
-
# multiple were provided
|
51
|
-
@credentials = if params[:secret]
|
52
|
-
CGI.escape(params[:secret])
|
53
|
-
else
|
54
|
-
raise TypeError
|
55
|
-
end
|
56
|
-
rescue TypeError
|
57
|
-
raise ArgumentError, "Invalid secret."
|
48
|
+
@credentials = params[:secret].to_s
|
58
49
|
end
|
59
50
|
|
60
51
|
def get(ref, query = {})
|
@@ -80,9 +71,9 @@ module Fauna
|
|
80
71
|
|
81
72
|
private
|
82
73
|
|
83
|
-
def parse(
|
84
|
-
obj =
|
85
|
-
obj.merge!
|
74
|
+
def parse(res)
|
75
|
+
obj = res.body.to_s.empty? ? {} : JSON.parse(res.body)
|
76
|
+
obj.merge!("headers" => res.headers)
|
86
77
|
obj
|
87
78
|
end
|
88
79
|
|
@@ -103,15 +94,12 @@ module Fauna
|
|
103
94
|
end
|
104
95
|
|
105
96
|
def execute(action, ref, data = nil, query = nil)
|
106
|
-
|
97
|
+
request = Typhoeus::Request.new(url(ref), :method => action)
|
98
|
+
request.options[:params] = query if query.is_a?(Hash)
|
107
99
|
|
108
|
-
if
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
if data && !data.empty?
|
113
|
-
args[:headers].merge! :content_type => :json
|
114
|
-
args.merge! :payload => data.to_json
|
100
|
+
if data.is_a?(Hash)
|
101
|
+
request.options[:headers] = { "Content-Type" => "application/json;charset=utf-8" }
|
102
|
+
request.options[:body] = data.to_json
|
115
103
|
end
|
116
104
|
|
117
105
|
if @logger
|
@@ -120,19 +108,17 @@ module Fauna
|
|
120
108
|
log(4) { "Request JSON: #{JSON.pretty_generate(data)}" } if @debug && data
|
121
109
|
|
122
110
|
t0, r0 = Process.times, Time.now
|
111
|
+
request.run
|
112
|
+
t1, r1 = Process.times, Time.now
|
123
113
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
log(4) { ["Response headers: #{JSON.pretty_generate(res.headers)}", "Response JSON: #{res}"] } if @debug
|
129
|
-
log(4) { "Response (#{res.code}): API processing #{res.headers[:x_http_request_processing_time]}ms, network latency #{((real - cpu)*1000).to_i}ms, local processing #{(cpu*1000).to_i}ms" }
|
130
|
-
|
131
|
-
HANDLER.call(res)
|
132
|
-
end
|
114
|
+
real = r1.to_f - r0.to_f
|
115
|
+
cpu = (t1.utime - t0.utime) + (t1.stime - t0.stime) + (t1.cutime - t0.cutime) + (t1.cstime - t0.cstime)
|
116
|
+
log(4) { ["Response headers: #{JSON.pretty_generate(request.response.headers)}", "Response JSON: #{request.response.body}"] } if @debug
|
117
|
+
log(4) { "Response (#{request.response.code}): API processing #{request.response.headers["X-HTTP-Request-Processing-Time"]}ms, network latency #{((real - cpu)*1000).to_i}ms, local processing #{(cpu*1000).to_i}ms" }
|
133
118
|
else
|
134
|
-
|
119
|
+
request.run
|
135
120
|
end
|
121
|
+
HANDLER.call(request.response)
|
136
122
|
end
|
137
123
|
|
138
124
|
def url(ref)
|
data/lib/fauna/rails.rb
CHANGED
@@ -9,7 +9,7 @@ if defined?(Rails)
|
|
9
9
|
|
10
10
|
@silent = false
|
11
11
|
|
12
|
-
CONFIG_FILE = "#{Rails.root}/fauna.yml"
|
12
|
+
CONFIG_FILE = "#{Rails.root}/config/fauna.yml"
|
13
13
|
LOCAL_CONFIG_FILE = "#{ENV["HOME"]}/.fauna.yml"
|
14
14
|
APP_NAME = Rails.application.class.name.split("::").first.underscore
|
15
15
|
FIXTURES_DIR = "#{Rails.root}/test/fixtures/fauna"
|
@@ -23,8 +23,8 @@ if defined?(Rails)
|
|
23
23
|
end
|
24
24
|
|
25
25
|
if !@silent
|
26
|
-
if credentials["
|
27
|
-
STDERR.puts ">> Using Fauna server key #{credentials["
|
26
|
+
if credentials["secret"]
|
27
|
+
STDERR.puts ">> Using Fauna server key #{credentials["secret"].inspect} for #{APP_NAME.inspect}."
|
28
28
|
else
|
29
29
|
STDERR.puts ">> Using Fauna account #{credentials["email"].inspect} for #{APP_NAME.inspect}."
|
30
30
|
end
|
@@ -32,18 +32,18 @@ if defined?(Rails)
|
|
32
32
|
STDERR.puts ">> You can change this in config/fauna.yml or ~/.fauna.yml."
|
33
33
|
end
|
34
34
|
|
35
|
-
if credentials["
|
36
|
-
|
35
|
+
if credentials["secret"]
|
36
|
+
secret = credentials["secret"]
|
37
37
|
else
|
38
38
|
self.root_connection = Connection.new(
|
39
39
|
:email => credentials["email"],
|
40
40
|
:password => credentials["password"],
|
41
41
|
:logger => Rails.logger)
|
42
42
|
|
43
|
-
|
43
|
+
secret = root_connection.post("keys", "role" => "server")["resource"]["key"]
|
44
44
|
end
|
45
45
|
|
46
|
-
self.connection = Connection.new(
|
46
|
+
self.connection = Connection.new(secret: secret, logger: Rails.logger)
|
47
47
|
else
|
48
48
|
if !@silent
|
49
49
|
STDERR.puts ">> Fauna account not configured. You can add one in config/fauna.yml."
|
data/lib/fauna/resource.rb
CHANGED
@@ -54,6 +54,17 @@ module Fauna
|
|
54
54
|
EventsPage.find("#{ref}/events", {}, pagination)
|
55
55
|
end
|
56
56
|
|
57
|
+
def new_event(action, time)
|
58
|
+
if persisted?
|
59
|
+
Fauna::Event.new(
|
60
|
+
'resource' => ref,
|
61
|
+
'set' => ref,
|
62
|
+
'action' => action,
|
63
|
+
'ts' => Fauna.usecs_from_time(time)
|
64
|
+
)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
57
68
|
def set(name)
|
58
69
|
CustomSet.new("#{ref}/sets/#{CGI.escape(name)}")
|
59
70
|
end
|
data/lib/fauna/set.rb
CHANGED
@@ -60,31 +60,42 @@ module Fauna
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def param_strings
|
63
|
+
if @function == 'match'
|
64
|
+
# Escape strings for match values
|
65
|
+
@params = @params[0..1] + @params[2..-1].map do |p|
|
66
|
+
if p.is_a?(String)
|
67
|
+
p.inspect
|
68
|
+
else
|
69
|
+
p
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
63
74
|
@param_strings ||= @params.map do |p|
|
64
75
|
if p.respond_to? :expr
|
65
76
|
p.expr
|
66
77
|
elsif p.respond_to? :ref
|
67
78
|
p.ref
|
68
79
|
else
|
69
|
-
p
|
80
|
+
p.to_s
|
70
81
|
end
|
71
82
|
end
|
72
83
|
end
|
73
84
|
|
74
85
|
def expr
|
75
|
-
@expr ||= "#{@function}(#{param_strings.join
|
86
|
+
@expr ||= "#{@function}(#{param_strings.join(',')})"
|
76
87
|
end
|
77
88
|
|
78
89
|
def ref
|
79
|
-
"
|
90
|
+
"queries?q=#{expr}"
|
80
91
|
end
|
81
92
|
|
82
93
|
def page(pagination = {})
|
83
|
-
SetPage.find('
|
94
|
+
SetPage.find('queries', { 'q' => expr }, pagination)
|
84
95
|
end
|
85
96
|
|
86
97
|
def events(pagination = {})
|
87
|
-
EventsPage.find(
|
98
|
+
EventsPage.find('queries', { 'q' => "events(#{expr})" }, pagination)
|
88
99
|
end
|
89
100
|
end
|
90
101
|
|
@@ -96,34 +107,37 @@ module Fauna
|
|
96
107
|
def events(pagination = {})
|
97
108
|
query = param_strings.first
|
98
109
|
subqueries = param_strings.drop(1).join ','
|
99
|
-
EventsPage.find(
|
110
|
+
EventsPage.find('queries', { 'q' => "each(events(#{query}),#{subqueries})" }, pagination)
|
100
111
|
end
|
101
112
|
end
|
102
113
|
|
103
114
|
class CustomSet < Set
|
104
|
-
def add(resource)
|
105
|
-
self.class.add(self, resource)
|
115
|
+
def add(resource, time = nil)
|
116
|
+
self.class.add(self, resource, time)
|
106
117
|
end
|
107
118
|
|
108
|
-
def remove(resource)
|
109
|
-
self.class.remove(self, resource)
|
119
|
+
def remove(resource, time = nil)
|
120
|
+
self.class.remove(self, resource, time)
|
110
121
|
end
|
111
122
|
|
112
|
-
def self.add(set, resource)
|
123
|
+
def self.add(set, resource, time = nil)
|
113
124
|
set = set.ref if set.respond_to? :ref
|
114
125
|
resource = resource.ref if resource.respond_to? :ref
|
115
|
-
Fauna
|
126
|
+
event = time ? "/events/#{Fauna.usecs_from_time(time)}/create" : ''
|
127
|
+
Fauna::Client.put("#{set}/#{resource}#{event}")
|
116
128
|
end
|
117
129
|
|
118
|
-
def self.remove(set, resource)
|
130
|
+
def self.remove(set, resource, time = nil)
|
119
131
|
set = set.ref if set.respond_to? :ref
|
120
132
|
resource = resource.ref if resource.respond_to? :ref
|
121
|
-
Fauna
|
133
|
+
event = time ? "/events/#{Fauna.usecs_from_time(time)}/delete" : ''
|
134
|
+
Fauna::Client.put("#{set}/#{resource}#{event}")
|
122
135
|
end
|
123
136
|
end
|
124
137
|
|
125
138
|
class SetPage < Fauna::Resource
|
126
139
|
include Enumerable
|
140
|
+
undef :count
|
127
141
|
|
128
142
|
def refs
|
129
143
|
@refs ||= struct['resources']
|
@@ -143,6 +157,7 @@ module Fauna
|
|
143
157
|
|
144
158
|
class EventsPage < Fauna::Resource
|
145
159
|
include Enumerable
|
160
|
+
undef :count
|
146
161
|
|
147
162
|
def events
|
148
163
|
@events ||= struct['events'].map { |e| Event.new(e) }
|
@@ -165,6 +180,18 @@ module Fauna
|
|
165
180
|
@attrs = attrs
|
166
181
|
end
|
167
182
|
|
183
|
+
def ref
|
184
|
+
"#{resource}/events/#{@attrs['ts']}/#{action}"
|
185
|
+
end
|
186
|
+
|
187
|
+
def event_ref
|
188
|
+
if set == resource
|
189
|
+
"#{resource}/events/#{@attrs['ts']}/#{action}"
|
190
|
+
else
|
191
|
+
"#{set}/#{resource}/events/#{@attrs['ts']}/#{action}"
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
168
195
|
def ts
|
169
196
|
Fauna.time_from_usecs(@attrs['ts'])
|
170
197
|
end
|
@@ -180,5 +207,17 @@ module Fauna
|
|
180
207
|
def action
|
181
208
|
@attrs['action']
|
182
209
|
end
|
210
|
+
|
211
|
+
def save
|
212
|
+
Fauna::Client.put(event_ref) if editable?
|
213
|
+
end
|
214
|
+
|
215
|
+
def delete
|
216
|
+
Fauna::Client.delete(event_ref) if editable?
|
217
|
+
end
|
218
|
+
|
219
|
+
def editable?
|
220
|
+
['create', 'delete'].include? action
|
221
|
+
end
|
183
222
|
end
|
184
223
|
end
|
data/lib/fauna/util.rb
CHANGED
@@ -1,14 +1,4 @@
|
|
1
1
|
module Fauna
|
2
|
-
def self.stringify_keys!(hash)
|
3
|
-
hash.keys.each do |k|
|
4
|
-
hash[k.to_s] = hash.delete k
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
def self.stringify_keys(hash)
|
9
|
-
stringify_keys!(hash.dup)
|
10
|
-
end
|
11
|
-
|
12
2
|
def self.time_from_usecs(microseconds)
|
13
3
|
Time.at(microseconds/1_000_000, microseconds % 1_000_000)
|
14
4
|
end
|
data/test/class_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path('../test_helper', __FILE__)
|
2
2
|
|
3
|
-
class
|
3
|
+
class ClassTest < MiniTest::Unit::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
6
|
super
|
@@ -42,13 +42,6 @@ class InstanceTest < MiniTest::Unit::TestCase
|
|
42
42
|
assert pig1.persisted?
|
43
43
|
end
|
44
44
|
|
45
|
-
def test_find_by_constraint
|
46
|
-
pig = Fauna::Resource.create 'classes/pigs', :constraints => { :name => "the pig" }
|
47
|
-
pig1 = Fauna::Resource.find('classes/pigs/constraints/name/the%20pig')
|
48
|
-
assert_equal pig.ref, pig1.ref
|
49
|
-
assert pig1.persisted?
|
50
|
-
end
|
51
|
-
|
52
45
|
def test_delete
|
53
46
|
pig = Fauna::Resource.create 'classes/pigs'
|
54
47
|
pig.delete
|
@@ -62,23 +55,4 @@ class InstanceTest < MiniTest::Unit::TestCase
|
|
62
55
|
pig = Fauna::Resource.new 'classes/pigs'
|
63
56
|
assert_nil pig.ts
|
64
57
|
end
|
65
|
-
|
66
|
-
def test_ts_assignment
|
67
|
-
time = Time.at(0)
|
68
|
-
pig = Fauna::Resource.create 'classes/pigs'
|
69
|
-
pig.ts = time
|
70
|
-
|
71
|
-
Fauna::Client.context(@server_connection) do
|
72
|
-
pig2 = Fauna::Resource.find(pig.ref)
|
73
|
-
assert(time != pig2.ts)
|
74
|
-
end
|
75
|
-
|
76
|
-
pig.save
|
77
|
-
|
78
|
-
Fauna::Client.context(@server_connection) do
|
79
|
-
pig3 = Fauna::Resource.find(pig.ref)
|
80
|
-
# Waiting on server support for timestamp overrides
|
81
|
-
# assert_equal time, pig3.ts
|
82
|
-
end
|
83
|
-
end
|
84
58
|
end
|
data/test/connection_test.rb
CHANGED
@@ -34,4 +34,18 @@ class ConnectionTest < MiniTest::Unit::TestCase
|
|
34
34
|
@server_connection.get(user['ref'])
|
35
35
|
end
|
36
36
|
end
|
37
|
+
|
38
|
+
# def test_retry
|
39
|
+
# class << RestClient::Request
|
40
|
+
# alias __execute__ execute
|
41
|
+
# end
|
42
|
+
|
43
|
+
# class << RestClient::Request
|
44
|
+
# def execute(*args, &block)
|
45
|
+
# alias execute __execute__
|
46
|
+
# raise RestClient::ServerBrokeConnection
|
47
|
+
# end
|
48
|
+
# end
|
49
|
+
# @server_connection.get("users/instances")
|
50
|
+
# end
|
37
51
|
end
|
data/test/database_test.rb
CHANGED
@@ -10,26 +10,28 @@ class DatabaseTest < MiniTest::Unit::TestCase
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
14
|
-
assert_raises(Fauna::Connection::
|
15
|
-
|
13
|
+
def test_get
|
14
|
+
assert_raises(Fauna::Connection::NotFound) do
|
15
|
+
Fauna::Resource.find("databases/fauna-ruby-test")
|
16
|
+
end
|
17
|
+
Fauna::Client.context(@root_connection) do
|
18
|
+
Fauna::Resource.find("databases/fauna-ruby-test")
|
19
|
+
Fauna::Resource.find("databases/fauna-ruby-test2")
|
16
20
|
end
|
17
21
|
end
|
18
22
|
|
19
|
-
def
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
Fauna::Resource.find('databases/self')
|
26
|
-
end
|
23
|
+
def test_create
|
24
|
+
assert_raises(Fauna::Connection::NotFound) do
|
25
|
+
@model.save
|
26
|
+
end
|
27
|
+
Fauna::Client.context(@root_connection) do
|
28
|
+
@model.save
|
27
29
|
end
|
28
30
|
end
|
29
31
|
|
30
32
|
def test_destroy
|
31
|
-
assert_raises(Fauna::Connection::
|
32
|
-
|
33
|
+
assert_raises(Fauna::Connection::NotFound) do
|
34
|
+
@model.delete
|
33
35
|
end
|
34
36
|
Fauna::Client.context(@root_connection) do
|
35
37
|
@model.delete
|
data/test/query_test.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require File.expand_path('../test_helper', __FILE__)
|
2
|
+
|
3
|
+
# TODO use association_test classes
|
4
|
+
|
5
|
+
class QueryTest < MiniTest::Unit::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
super
|
9
|
+
@model = Fauna::Resource.create 'classes/message_boards'
|
10
|
+
@posts_set = @model.set 'posts'
|
11
|
+
@posts = []
|
12
|
+
@comments = []
|
13
|
+
|
14
|
+
3.times do |i|
|
15
|
+
post = Fauna::Resource.create(
|
16
|
+
'classes/posts',
|
17
|
+
{ :data =>
|
18
|
+
{ :topic => "The Horned King" } })
|
19
|
+
@posts << post
|
20
|
+
@posts_set.add(post)
|
21
|
+
3.times do |j|
|
22
|
+
comment = Fauna::Resource.create(
|
23
|
+
'classes/comments',
|
24
|
+
{ :data =>
|
25
|
+
{ :text => "Do not show the Horned King the whereabouts of the Black Cauldron!" } })
|
26
|
+
@comments << comment
|
27
|
+
Fauna::CustomSet.new("#{post.ref}/sets/comments").add(comment)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_join
|
33
|
+
query = Fauna::Set.join @posts_set, '_/sets/comments'
|
34
|
+
assert_equal 9, query.page.size
|
35
|
+
@comments.flatten.each do |comment|
|
36
|
+
assert query.page.include? comment.ref
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_match
|
41
|
+
query = Fauna::Set.match 'classes/posts', 'data.topic', 'The Horned King'
|
42
|
+
assert query.page.size > 1
|
43
|
+
end
|
44
|
+
end
|
data/test/set_test.rb
CHANGED
@@ -14,6 +14,7 @@ class SetTest < MiniTest::Unit::TestCase
|
|
14
14
|
page = @posts.page
|
15
15
|
assert_equal "#{@model.ref}/sets/posts", page.ref
|
16
16
|
assert_equal 0, page.refs.size
|
17
|
+
assert_equal 0, page.count
|
17
18
|
end
|
18
19
|
|
19
20
|
def test_pagination
|
@@ -25,6 +26,7 @@ class SetTest < MiniTest::Unit::TestCase
|
|
25
26
|
|
26
27
|
page1 = @posts.page(:size => 2)
|
27
28
|
assert_equal 2, page1.refs.size
|
29
|
+
assert_equal 5, page1.count
|
28
30
|
page2 = @posts.page(:size => 2, :before => page1.before)
|
29
31
|
assert_equal 2, page2.refs.size
|
30
32
|
page3 = @posts.page(:size => 2, :before => page2.before)
|
@@ -36,6 +38,7 @@ class SetTest < MiniTest::Unit::TestCase
|
|
36
38
|
assert_equal 2, page5.refs.size
|
37
39
|
page6 = @posts.page(:size => 2, :after => page5.after)
|
38
40
|
assert_equal 1, page6.refs.size
|
41
|
+
assert_equal 5, page6.count
|
39
42
|
end
|
40
43
|
|
41
44
|
def test_any
|
@@ -66,29 +69,4 @@ class SetTest < MiniTest::Unit::TestCase
|
|
66
69
|
@posts.add(post)
|
67
70
|
assert_equal [post.ref], @posts.page.refs
|
68
71
|
end
|
69
|
-
|
70
|
-
def test_event_set_query
|
71
|
-
posts = (1..3).map do |i|
|
72
|
-
Fauna::Resource.create('classes/posts').tap do |p|
|
73
|
-
@posts.add(p)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
comments = posts.map do |p|
|
78
|
-
(1..3).map do |i|
|
79
|
-
Fauna::Resource.create('classes/comments').tap do |c|
|
80
|
-
comments = Fauna::CustomSet.new("#{p.ref}/sets/comments")
|
81
|
-
comments.add(c)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
q = Fauna::Set.join(@posts, 'sets/comments')
|
87
|
-
|
88
|
-
assert_equal 9, q.page.size
|
89
|
-
|
90
|
-
comments.flatten.each do |c|
|
91
|
-
assert q.page.include?(c.ref)
|
92
|
-
end
|
93
|
-
end
|
94
72
|
end
|
data/test/test_helper.rb
CHANGED
@@ -7,16 +7,16 @@ require "fauna"
|
|
7
7
|
require "securerandom"
|
8
8
|
require "mocha/setup"
|
9
9
|
|
10
|
-
|
10
|
+
FAUNA_ROOT_KEY = ENV["FAUNA_ROOT_KEY"]
|
11
11
|
FAUNA_DOMAIN = ENV["FAUNA_DOMAIN"]
|
12
12
|
FAUNA_SCHEME = ENV["FAUNA_SCHEME"]
|
13
13
|
FAUNA_PORT = ENV["FAUNA_PORT"]
|
14
14
|
|
15
|
-
if !
|
16
|
-
raise "
|
15
|
+
if !FAUNA_ROOT_KEY
|
16
|
+
raise "FAUNA_ROOT_KEY must be defined in your environment to run tests."
|
17
17
|
end
|
18
18
|
|
19
|
-
ROOT_CONNECTION = Fauna::Connection.new(:secret =>
|
19
|
+
ROOT_CONNECTION = Fauna::Connection.new(:secret => FAUNA_ROOT_KEY, :domain => FAUNA_DOMAIN, :scheme => FAUNA_SCHEME, :port => FAUNA_PORT)
|
20
20
|
|
21
21
|
Fauna::Client.context(ROOT_CONNECTION) do
|
22
22
|
Fauna::Resource.new('databases', :name => "fauna-ruby-test").delete rescue nil
|
@@ -38,6 +38,11 @@ Fauna::Client.context(SERVER_CONNECTION) do
|
|
38
38
|
Fauna::Resource.create 'classes', :name => 'message_boards'
|
39
39
|
Fauna::Resource.create 'classes', :name => 'posts'
|
40
40
|
Fauna::Resource.create 'classes', :name => 'comments'
|
41
|
+
|
42
|
+
# Fixture for readme_test
|
43
|
+
pig = Fauna::Resource.new('classes/pigs/42471470493859841')
|
44
|
+
pig.ref = 'classes/pigs/42471470493859841'
|
45
|
+
pig.save
|
41
46
|
end
|
42
47
|
|
43
48
|
# test harness
|
metadata
CHANGED
@@ -1,20 +1,47 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fauna
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: '1.2'
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Fauna, Inc.
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
|
-
cert_chain:
|
12
|
-
|
10
|
+
cert_chain:
|
11
|
+
- !binary |-
|
12
|
+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURhRENDQWxDZ0F3SUJB
|
13
|
+
Z0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREE5TVEwd0N3WURWUVFEREFSbGRt
|
14
|
+
RnUKTVJnd0ZnWUtDWkltaVpQeUxHUUJHUllJWTJ4dmRXUmlkWEl4RWpBUUJn
|
15
|
+
b0praWFKay9Jc1pBRVpGZ0p6ZERBZQpGdzB4TXpFeE1EUXlNREkxTURWYUZ3
|
16
|
+
MHhOREV4TURReU1ESTFNRFZhTUQweERUQUxCZ05WQkFNTUJHVjJZVzR4CkdE
|
17
|
+
QVdCZ29Ka2lhSmsvSXNaQUVaRmdoamJHOTFaR0oxY2pFU01CQUdDZ21TSm9t
|
18
|
+
VDhpeGtBUmtXQW5OME1JSUIKSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4
|
19
|
+
QU1JSUJDZ0tDQVFFQXVHNHEySWRUdGxjNy9JSmtXUG5iT0FGdAp5c0tjM1ht
|
20
|
+
TEhzamVTWFhTUGRRMW1iMmNEWHZ5RFM4VGt6anJnRG9KOTZSUjJ4cmg3YmZr
|
21
|
+
SEFNSmhTVk1oc1BNCnJuWVM3ZkRzLy9YMWg2ZlJZQmpqaHFHZVFoQ0wxeHJT
|
22
|
+
NS9JNHZLYjdBamdGbnVVYk1aL0gwK2ljMkljMnpUbloKanR0U1FaL1FPbFl5
|
23
|
+
Y3RyWW9UekFGZFB3TCtkT3hza095QW1BYnRWL3BWM293Y1hwQ2hSVC90cGhD
|
24
|
+
N3U2OXNPaworSWpXc013ckJDYkVkai9KbWg0YTUyUW50QXdQV3g0S3J0MHpt
|
25
|
+
OGVWMy9ValNPYkIzQlIxcFovaTVJc1NMUHMxCmx3TUE2eXdiZnhCVFA1OVhj
|
26
|
+
Z0F5aGZWM3JSUVhiK3ZqcGY3T0x1T0NKT1VJTjhHRXdiNUhOakZvL1VWZGl3
|
27
|
+
SUQKQVFBQm8zTXdjVEFKQmdOVkhSTUVBakFBTUFzR0ExVWREd1FFQXdJRXNE
|
28
|
+
QWRCZ05WSFE0RUZnUVViVENxeXlkbgowUm02bm5nZjE1S3RDRU1jMzdzd0d3
|
29
|
+
WURWUjBSQkJRd0VvRVFaWFpoYmtCamJHOTFaR0oxY2k1emREQWJCZ05WCkhS
|
30
|
+
SUVGREFTZ1JCbGRtRnVRR05zYjNWa1luVnlMbk4wTUEwR0NTcUdTSWIzRFFF
|
31
|
+
QkJRVUFBNElCQVFCZ2dHR2IKMEFveUYwUW9memtQSW11aE4xVUY2ZUcvUmRZ
|
32
|
+
T0hxaVVvdnVSTi85SWJseUtBYVpBSWwxbUlzcGZDYXY4RVZ3bwpTQzZ2ejRP
|
33
|
+
YUlWcFM3UWRJMDRvTE5IeGhtQzZDNVRUQk9OdGRkRGw5M00rOXVXVmlwRDV1
|
34
|
+
VlBrdGNIV0crYktuCjJMMWxVeWtRWHI4cmE0NVRxQVVaL1ArWXY3NlU4a1Vz
|
35
|
+
VkcySEU1Z2wvQ2dCNStWMXFrcG41TTRDQURzdlN2UEEKcUVBVFp2dytLVXp6
|
36
|
+
TUNVaVZ6cStUNmxEcnJDdCtzRDNOWmx2RzRCRDJQcFF1UHREZjFpNjFEVWMr
|
37
|
+
NXMyTndtMgp0NHVxTkY3c3dCV1MwbjQwL2htbjV1OHBUMkpWc3V3YW03OUdH
|
38
|
+
aEptTmZDZFBDY0NiZ3Bocm9leFJjcndkVVJYCmx5MDBYZGYxZ0RWQnhSb1IK
|
39
|
+
LS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
|
40
|
+
date: 2013-11-04 00:00:00.000000000 Z
|
13
41
|
dependencies:
|
14
42
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
43
|
+
name: typhoeus
|
16
44
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
45
|
requirements:
|
19
46
|
- - ! '>='
|
20
47
|
- !ruby/object:Gem::Version
|
@@ -22,7 +49,6 @@ dependencies:
|
|
22
49
|
type: :runtime
|
23
50
|
prerelease: false
|
24
51
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
52
|
requirements:
|
27
53
|
- - ! '>='
|
28
54
|
- !ruby/object:Gem::Version
|
@@ -30,7 +56,6 @@ dependencies:
|
|
30
56
|
- !ruby/object:Gem::Dependency
|
31
57
|
name: json
|
32
58
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
59
|
requirements:
|
35
60
|
- - ! '>='
|
36
61
|
- !ruby/object:Gem::Version
|
@@ -38,7 +63,6 @@ dependencies:
|
|
38
63
|
type: :runtime
|
39
64
|
prerelease: false
|
40
65
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
66
|
requirements:
|
43
67
|
- - ! '>='
|
44
68
|
- !ruby/object:Gem::Version
|
@@ -46,7 +70,6 @@ dependencies:
|
|
46
70
|
- !ruby/object:Gem::Dependency
|
47
71
|
name: mocha
|
48
72
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
73
|
requirements:
|
51
74
|
- - ! '>='
|
52
75
|
- !ruby/object:Gem::Version
|
@@ -54,7 +77,6 @@ dependencies:
|
|
54
77
|
type: :development
|
55
78
|
prerelease: false
|
56
79
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
80
|
requirements:
|
59
81
|
- - ! '>='
|
60
82
|
- !ruby/object:Gem::Version
|
@@ -62,7 +84,6 @@ dependencies:
|
|
62
84
|
- !ruby/object:Gem::Dependency
|
63
85
|
name: echoe
|
64
86
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
87
|
requirements:
|
67
88
|
- - ! '>='
|
68
89
|
- !ruby/object:Gem::Version
|
@@ -70,7 +91,6 @@ dependencies:
|
|
70
91
|
type: :development
|
71
92
|
prerelease: false
|
72
93
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
94
|
requirements:
|
75
95
|
- - ! '>='
|
76
96
|
- !ruby/object:Gem::Version
|
@@ -78,7 +98,6 @@ dependencies:
|
|
78
98
|
- !ruby/object:Gem::Dependency
|
79
99
|
name: minitest
|
80
100
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
101
|
requirements:
|
83
102
|
- - ! '>='
|
84
103
|
- !ruby/object:Gem::Version
|
@@ -86,7 +105,6 @@ dependencies:
|
|
86
105
|
type: :development
|
87
106
|
prerelease: false
|
88
107
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
108
|
requirements:
|
91
109
|
- - ! '>='
|
92
110
|
- !ruby/object:Gem::Version
|
@@ -116,6 +134,7 @@ files:
|
|
116
134
|
- Manifest
|
117
135
|
- README.md
|
118
136
|
- Rakefile
|
137
|
+
- fauna-ruby.pem
|
119
138
|
- fauna.gemspec
|
120
139
|
- lib/fauna.rb
|
121
140
|
- lib/fauna/cache.rb
|
@@ -131,15 +150,17 @@ files:
|
|
131
150
|
- test/client_test.rb
|
132
151
|
- test/connection_test.rb
|
133
152
|
- test/database_test.rb
|
153
|
+
- test/query_test.rb
|
134
154
|
- test/readme_test.rb
|
135
155
|
- test/set_test.rb
|
136
156
|
- test/test_helper.rb
|
137
157
|
homepage: http://fauna.github.com/fauna/
|
138
|
-
licenses:
|
158
|
+
licenses:
|
159
|
+
- Mozilla Public License, Version 2.0 (MPL2)
|
160
|
+
metadata: {}
|
139
161
|
post_install_message:
|
140
162
|
rdoc_options:
|
141
163
|
- --line-numbers
|
142
|
-
- --inline-source
|
143
164
|
- --title
|
144
165
|
- Fauna
|
145
166
|
- --main
|
@@ -147,28 +168,27 @@ rdoc_options:
|
|
147
168
|
require_paths:
|
148
169
|
- lib
|
149
170
|
required_ruby_version: !ruby/object:Gem::Requirement
|
150
|
-
none: false
|
151
171
|
requirements:
|
152
172
|
- - ! '>='
|
153
173
|
- !ruby/object:Gem::Version
|
154
174
|
version: '0'
|
155
175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
|
-
none: false
|
157
176
|
requirements:
|
158
177
|
- - ! '>='
|
159
178
|
- !ruby/object:Gem::Version
|
160
179
|
version: '1.2'
|
161
180
|
requirements: []
|
162
181
|
rubyforge_project: fauna
|
163
|
-
rubygems_version: 1.
|
182
|
+
rubygems_version: 2.1.10
|
164
183
|
signing_key:
|
165
|
-
specification_version:
|
184
|
+
specification_version: 4
|
166
185
|
summary: Official Ruby client for the Fauna API.
|
167
186
|
test_files:
|
168
187
|
- test/class_test.rb
|
169
188
|
- test/client_test.rb
|
170
189
|
- test/connection_test.rb
|
171
190
|
- test/database_test.rb
|
191
|
+
- test/query_test.rb
|
172
192
|
- test/readme_test.rb
|
173
193
|
- test/set_test.rb
|
174
194
|
- test/test_helper.rb
|
metadata.gz.sig
ADDED
Binary file
|