david 0.3.0 → 0.4.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.
- checksums.yaml +4 -4
- data/.gitignore +4 -0
- data/.travis.yml +2 -2
- data/Gemfile +8 -2
- data/Gemfile.lock +84 -44
- data/README.md +87 -5
- data/benchmarks/Gemfile +1 -0
- data/benchmarks/Gemfile.lock +3 -1
- data/benchmarks/coapbench.sh +20 -0
- data/benchmarks/quick.sh +2 -0
- data/benchmarks/rackup/Gemfile +10 -0
- data/benchmarks/rackup/Gemfile.lock +159 -0
- data/benchmarks/rackup/grape.ru +18 -0
- data/benchmarks/rackup/rack.ru +7 -0
- data/benchmarks/rackup/rails.ru +14 -0
- data/benchmarks/rps.rb +14 -2
- data/benchmarks/stress.sh +17 -0
- data/david.gemspec +0 -3
- data/experiments/Gemfile +6 -0
- data/experiments/concurrency/Gemfile +3 -0
- data/experiments/concurrency/stub.rb +88 -0
- data/experiments/hash_key.rb +64 -0
- data/experiments/string_concat.rb +21 -0
- data/experiments/symbol_to_proc.rb +15 -0
- data/experiments/thread_safe.rb +40 -0
- data/lib/david.rb +8 -4
- data/lib/david/actor.rb +1 -11
- data/lib/david/app_config.rb +112 -0
- data/lib/david/exchange.rb +124 -0
- data/lib/david/fake_logger.rb +11 -0
- data/lib/david/garbage_collector.rb +9 -17
- data/lib/david/guerilla/rack/utils.rb +18 -0
- data/lib/david/interop.rb +4 -0
- data/lib/david/interop/mandatory_etsi.rb +4 -0
- data/lib/david/interop/mandatory_etsi/grape.rb +37 -0
- data/lib/david/interop/mandatory_etsi/hobbit.rb +30 -0
- data/lib/david/interop/mandatory_etsi/nyny.rb +36 -0
- data/lib/david/interop/mandatory_etsi/rack.rb +26 -0
- data/lib/david/interop/mandatory_etsi/sinatra.rb +36 -0
- data/lib/david/observe.rb +24 -29
- data/lib/david/rails/action_controller/base.rb +9 -7
- data/lib/david/railties/config.rb +4 -4
- data/lib/david/registry.rb +22 -0
- data/lib/david/server.rb +56 -56
- data/lib/david/server/constants.rb +1 -0
- data/lib/david/server/mapping.rb +43 -11
- data/lib/david/server/mid_cache.rb +29 -0
- data/lib/david/server/multicast.rb +7 -5
- data/lib/david/server/respond.rb +53 -43
- data/lib/david/server/utility.rb +2 -1
- data/lib/david/show_exceptions.rb +12 -8
- data/lib/david/transmitter.rb +44 -0
- data/lib/david/trap.rb +10 -0
- data/lib/david/version.rb +1 -1
- data/lib/rack/handler/david.rb +6 -10
- data/lib/rack/hello_world.rb +25 -0
- data/spec/app_config_spec.rb +56 -0
- data/spec/dummy/app/controllers/etsis_controller.rb +26 -0
- data/spec/dummy/app/controllers/tests_controller.rb +9 -0
- data/spec/dummy/config/application.rb +4 -6
- data/spec/dummy/config/environments/development.rb +2 -2
- data/spec/dummy/config/environments/test.rb +2 -2
- data/spec/dummy/config/routes.rb +13 -53
- data/spec/interop/mandatory_spec.rb +100 -0
- data/spec/observe_spec.rb +8 -7
- data/spec/resource_discovery_spec.rb +3 -3
- data/spec/server_spec.rb +60 -15
- data/spec/spec_helper.rb +21 -2
- metadata +40 -33
- data/lib/david/request.rb +0 -80
- data/lib/david/server/deduplication.rb +0 -21
- data/lib/david/server/options.rb +0 -79
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b97cbebfb17845f2a5fa678fa026b40c2a843c40
|
4
|
+
data.tar.gz: 8cee683c847e3ea1f1a93a501904dcdcb7be2312
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43be48293b3b0c45eabfe106aadbb6dc120db4224d01b09d752dedddb7525e22f03289b1497d28aa5e3c2c5a0a6ea614e9f433df1789b14bda8c5183b904fa1b
|
7
|
+
data.tar.gz: fa3af2ac69c7a12c4f9d67c70c0f261ef4a7dc3a216e4b6054f719233b45d30877335679baaf664a1f3e4eee80cce67fd943871f2d33d5090d49b57963f94349
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -7,10 +7,16 @@ group :cbor do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
group :development do
|
10
|
-
gem '
|
11
|
-
gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
|
10
|
+
gem 'ruby-prof', platforms: :mri
|
12
11
|
end
|
13
12
|
|
14
13
|
group :test do
|
15
14
|
gem 'coveralls', require: false
|
15
|
+
|
16
|
+
gem 'grape'
|
17
|
+
gem 'hobbit'
|
18
|
+
gem 'nyny'
|
19
|
+
gem 'rails', '~> 4.2.0'
|
20
|
+
gem 'rspec-rails', '~> 3.2.0'
|
21
|
+
gem 'sinatra'
|
16
22
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
david (0.
|
4
|
+
david (0.4.0)
|
5
5
|
celluloid-io (~> 0.16, >= 0.16.1)
|
6
6
|
coap (~> 0.1)
|
7
7
|
rack (~> 1.5)
|
@@ -38,11 +38,6 @@ GEM
|
|
38
38
|
activemodel (= 4.2.0)
|
39
39
|
activesupport (= 4.2.0)
|
40
40
|
arel (~> 6.0)
|
41
|
-
activerecord-jdbc-adapter (1.3.13)
|
42
|
-
activerecord (>= 2.2)
|
43
|
-
activerecord-jdbcsqlite3-adapter (1.3.13)
|
44
|
-
activerecord-jdbc-adapter (~> 1.3.13)
|
45
|
-
jdbc-sqlite3 (>= 3.7.2, < 3.9)
|
46
41
|
activesupport (4.2.0)
|
47
42
|
i18n (~> 0.7)
|
48
43
|
json (~> 1.7, >= 1.7.7)
|
@@ -50,32 +45,54 @@ GEM
|
|
50
45
|
thread_safe (~> 0.3, >= 0.3.4)
|
51
46
|
tzinfo (~> 1.1)
|
52
47
|
arel (6.0.0)
|
48
|
+
axiom-types (0.1.1)
|
49
|
+
descendants_tracker (~> 0.0.4)
|
50
|
+
ice_nine (~> 0.11.0)
|
51
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
53
52
|
builder (3.2.2)
|
54
53
|
cbor (0.5.9.0)
|
55
54
|
celluloid (0.16.0)
|
56
55
|
timers (~> 4.0.0)
|
57
|
-
celluloid-io (0.16.
|
56
|
+
celluloid-io (0.16.2)
|
58
57
|
celluloid (>= 0.16.0)
|
59
|
-
nio4r (>= 1.
|
60
|
-
coap (0.1.
|
58
|
+
nio4r (>= 1.1.0)
|
59
|
+
coap (0.1.1)
|
61
60
|
celluloid-io (~> 0.16, >= 0.16.1)
|
62
61
|
resolv-ipv6favor (~> 0)
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
62
|
+
coercible (1.0.0)
|
63
|
+
descendants_tracker (~> 0.0.1)
|
64
|
+
coveralls (0.7.9)
|
65
|
+
multi_json (~> 1.10)
|
66
|
+
rest-client (~> 1.7)
|
67
|
+
simplecov (~> 0.9.1)
|
68
|
+
term-ansicolor (~> 1.3)
|
69
|
+
thor (~> 0.19.1)
|
70
|
+
descendants_tracker (0.0.4)
|
71
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
69
72
|
diff-lcs (1.2.5)
|
70
73
|
docile (1.1.5)
|
74
|
+
equalizer (0.0.9)
|
71
75
|
erubis (2.7.0)
|
72
76
|
globalid (0.3.0)
|
73
77
|
activesupport (>= 4.1.0)
|
78
|
+
grape (0.10.1)
|
79
|
+
activesupport
|
80
|
+
builder
|
81
|
+
hashie (>= 2.1.0)
|
82
|
+
multi_json (>= 1.3.2)
|
83
|
+
multi_xml (>= 0.5.2)
|
84
|
+
rack (>= 1.3.0)
|
85
|
+
rack-accept
|
86
|
+
rack-mount
|
87
|
+
virtus (>= 1.0.0)
|
88
|
+
hashie (3.4.0)
|
74
89
|
hike (1.2.3)
|
75
90
|
hitimes (1.2.2)
|
76
91
|
hitimes (1.2.2-java)
|
92
|
+
hobbit (0.6.0)
|
93
|
+
rack
|
77
94
|
i18n (0.7.0)
|
78
|
-
|
95
|
+
ice_nine (0.11.1)
|
79
96
|
json (1.8.2)
|
80
97
|
json (1.8.2-java)
|
81
98
|
loofah (2.0.1)
|
@@ -86,13 +103,23 @@ GEM
|
|
86
103
|
mini_portile (0.6.2)
|
87
104
|
minitest (5.5.1)
|
88
105
|
multi_json (1.10.1)
|
106
|
+
multi_xml (0.5.5)
|
89
107
|
netrc (0.10.2)
|
90
108
|
nio4r (1.1.0)
|
91
109
|
nio4r (1.1.0-java)
|
92
|
-
nokogiri (1.6.
|
110
|
+
nokogiri (1.6.6.2)
|
93
111
|
mini_portile (~> 0.6.0)
|
94
|
-
nokogiri (1.6.
|
112
|
+
nokogiri (1.6.6.2-java)
|
113
|
+
nyny (2.2.1)
|
114
|
+
rack
|
115
|
+
tilt
|
95
116
|
rack (1.6.0)
|
117
|
+
rack-accept (0.4.5)
|
118
|
+
rack (>= 0.4)
|
119
|
+
rack-mount (0.8.3)
|
120
|
+
rack (>= 1.0.0)
|
121
|
+
rack-protection (1.5.3)
|
122
|
+
rack
|
96
123
|
rack-test (0.6.3)
|
97
124
|
rack (>= 1.0)
|
98
125
|
rails (4.2.0)
|
@@ -124,41 +151,46 @@ GEM
|
|
124
151
|
rest-client (1.7.2)
|
125
152
|
mime-types (>= 1.16, < 3.0)
|
126
153
|
netrc (~> 0.7)
|
127
|
-
rspec (3.
|
128
|
-
rspec-core (~> 3.
|
129
|
-
rspec-expectations (~> 3.
|
130
|
-
rspec-mocks (~> 3.
|
131
|
-
rspec-core (3.
|
132
|
-
rspec-support (~> 3.
|
133
|
-
rspec-expectations (3.
|
154
|
+
rspec (3.2.0)
|
155
|
+
rspec-core (~> 3.2.0)
|
156
|
+
rspec-expectations (~> 3.2.0)
|
157
|
+
rspec-mocks (~> 3.2.0)
|
158
|
+
rspec-core (3.2.0)
|
159
|
+
rspec-support (~> 3.2.0)
|
160
|
+
rspec-expectations (3.2.0)
|
134
161
|
diff-lcs (>= 1.2.0, < 2.0)
|
135
|
-
rspec-support (~> 3.
|
136
|
-
rspec-mocks (3.
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
rspec-
|
144
|
-
rspec-
|
145
|
-
rspec-
|
146
|
-
|
162
|
+
rspec-support (~> 3.2.0)
|
163
|
+
rspec-mocks (3.2.0)
|
164
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
165
|
+
rspec-support (~> 3.2.0)
|
166
|
+
rspec-rails (3.2.0)
|
167
|
+
actionpack (>= 3.0, <= 4.2)
|
168
|
+
activesupport (>= 3.0, <= 4.2)
|
169
|
+
railties (>= 3.0, <= 4.2)
|
170
|
+
rspec-core (~> 3.2.0)
|
171
|
+
rspec-expectations (~> 3.2.0)
|
172
|
+
rspec-mocks (~> 3.2.0)
|
173
|
+
rspec-support (~> 3.2.0)
|
174
|
+
rspec-support (3.2.0)
|
175
|
+
ruby-prof (0.15.3)
|
147
176
|
simplecov (0.9.1)
|
148
177
|
docile (~> 1.1.0)
|
149
178
|
multi_json (~> 1.0)
|
150
179
|
simplecov-html (~> 0.8.0)
|
151
180
|
simplecov-html (0.8.0)
|
181
|
+
sinatra (1.4.5)
|
182
|
+
rack (~> 1.4)
|
183
|
+
rack-protection (~> 1.4)
|
184
|
+
tilt (~> 1.3, >= 1.3.4)
|
152
185
|
sprockets (2.12.3)
|
153
186
|
hike (~> 1.2)
|
154
187
|
multi_json (~> 1.0)
|
155
188
|
rack (~> 1.0)
|
156
189
|
tilt (~> 1.1, != 1.3.0)
|
157
|
-
sprockets-rails (2.2.
|
190
|
+
sprockets-rails (2.2.4)
|
158
191
|
actionpack (>= 3.0)
|
159
192
|
activesupport (>= 3.0)
|
160
193
|
sprockets (>= 2.8, < 4.0)
|
161
|
-
sqlite3 (1.3.10)
|
162
194
|
term-ansicolor (1.3.0)
|
163
195
|
tins (~> 1.0)
|
164
196
|
thor (0.19.1)
|
@@ -167,21 +199,29 @@ GEM
|
|
167
199
|
tilt (1.4.1)
|
168
200
|
timers (4.0.1)
|
169
201
|
hitimes
|
170
|
-
tins (1.3.
|
202
|
+
tins (1.3.4)
|
171
203
|
tzinfo (1.2.2)
|
172
204
|
thread_safe (~> 0.1)
|
205
|
+
virtus (1.0.4)
|
206
|
+
axiom-types (~> 0.1)
|
207
|
+
coercible (~> 1.0)
|
208
|
+
descendants_tracker (~> 0.0, >= 0.0.3)
|
209
|
+
equalizer (~> 0.0, >= 0.0.9)
|
173
210
|
|
174
211
|
PLATFORMS
|
175
212
|
java
|
176
213
|
ruby
|
177
214
|
|
178
215
|
DEPENDENCIES
|
179
|
-
activerecord-jdbcsqlite3-adapter
|
180
216
|
cbor
|
181
217
|
coveralls
|
182
218
|
david!
|
183
|
-
|
219
|
+
grape
|
220
|
+
hobbit
|
221
|
+
nyny
|
222
|
+
rails (~> 4.2.0)
|
184
223
|
rake
|
185
224
|
rspec (~> 3.1)
|
186
|
-
rspec-rails (~> 3.
|
187
|
-
|
225
|
+
rspec-rails (~> 3.2.0)
|
226
|
+
ruby-prof
|
227
|
+
sinatra
|
data/README.md
CHANGED
@@ -1,18 +1,100 @@
|
|
1
|
+
# David
|
2
|
+
|
1
3
|
[](http://badge.fury.io/rb/david)
|
2
4
|
[](https://gemnasium.com/nning/david)
|
3
5
|
[](https://travis-ci.org/nning/david)
|
4
6
|
[](https://coveralls.io/r/nning/david)
|
5
7
|
[](https://codeclimate.com/github/nning/david)
|
6
8
|
|
7
|
-
# David
|
8
|
-
|
9
9
|
David is a CoAP server with Rack interface to bring the illustrious family of
|
10
10
|
Rack compatible web frameworks into the Internet of Things. **Currently, it is
|
11
|
-
in a development state
|
11
|
+
in a development state and probably not ready for use in production.**
|
12
|
+
|
13
|
+
## Usage
|
14
|
+
|
15
|
+
Just include David in your Gemfile!
|
16
|
+
|
17
|
+
gem 'david'
|
18
|
+
|
19
|
+
It will hook into Rack and make itself the default handler, so running `rails
|
20
|
+
s` starts David. If you want to start WEBrick for example, you can do so by
|
21
|
+
executing `rails s webrick`.
|
22
|
+
|
23
|
+
As [CoAP](https://tools.ietf.org/html/rfc7252) is a protocol for constrained
|
24
|
+
environments and machine to machine communications, returning HTML from your
|
25
|
+
controllers will not be of much use. JSON for example is more suitable in that
|
26
|
+
context. You can also utilize [JBuilder
|
27
|
+
templates](https://github.com/rails/jbuilder) for easy JSON generation.
|
28
|
+
|
29
|
+
[CBOR](https://tools.ietf.org/html/rfc7049) can be used to compress your JSON.
|
30
|
+
You can activate automatic transcoding between JSON and CBOR by setting the
|
31
|
+
Rack environment option `CBOR` or `config.coap.cbor` in your Rails application
|
32
|
+
config to `true`.
|
33
|
+
|
34
|
+
## Tested Rack Frameworks
|
35
|
+
|
36
|
+
* [Grape](https://github.com/intridea/grape)
|
37
|
+
* [Hobbit](https://github.com/patriciomacadden/hobbit)
|
38
|
+
* [NYNY](https://github.com/alisnic/nyny)
|
39
|
+
* Plain Rack
|
40
|
+
* [Sinatra](https://github.com/sinatra/sinatra)
|
41
|
+
* [Rails](https://github.com/rails/rails)
|
42
|
+
|
43
|
+
## Configuration
|
44
|
+
|
45
|
+
| Rack key | Rails key | Default | Semantics |
|
46
|
+
|--- |--- |--- |--- |
|
47
|
+
| Block | coap.block | true | Blockwise transfers |
|
48
|
+
| CBOR | coap.cbor | false | JSON/CBOR transcoding |
|
49
|
+
| DefaultFormat | coap.default_format | | Default Content-Type |
|
50
|
+
| Host | | ::1 / :: | Server listening host |
|
51
|
+
| Log | | info | Log level (none or debug) |
|
52
|
+
| MinimalMapping | | false | Minimal HTTP status codes mapping |
|
53
|
+
| Multicast | coap.multicast | true | Multicast support |
|
54
|
+
| Observe | coap.observe | true | Observe support |
|
55
|
+
| | coap.only | true | Removes (HTTP) middleware |
|
56
|
+
| Port | | 5683 | Server listening port |
|
57
|
+
| | coap.resource_discovery | true | Provision of `.well-known/core` |
|
58
|
+
|
59
|
+
## Discovery
|
60
|
+
|
61
|
+
The [CoAP Discovery](https://tools.ietf.org/html/rfc7252#section-7) will be
|
62
|
+
activated by default. A `.well-known/core` resource automatically returns the
|
63
|
+
resources you defined in Rails. You can annotate this resources with attributes
|
64
|
+
like an interface description (`if`) or the content type (`ct`). (See
|
65
|
+
[RFC6690](https://tools.ietf.org/html/rfc6690) or [the
|
66
|
+
code](https://github.com/nning/coap/blob/master/lib/core/link.rb#L8) for
|
67
|
+
further documentation.)
|
68
|
+
|
69
|
+
class ThingsController < ApplicationController
|
70
|
+
discoverable \
|
71
|
+
default: { if: 'urn:things', ct: 'application/cbor' },
|
72
|
+
index: { if: 'urn:index' }
|
73
|
+
|
74
|
+
def show
|
75
|
+
render json: Thing.find(params[:id])
|
76
|
+
end
|
77
|
+
|
78
|
+
def index
|
79
|
+
render json: Thing.all
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
## Rack environment
|
84
|
+
|
85
|
+
| Key | Value class | Semantics |
|
86
|
+
|--- |--- |--- |
|
87
|
+
| coap.version | Integer | Protocol version of CoAP request |
|
88
|
+
| coap.multicast | Boolean | Marks whether request was received via multicast |
|
89
|
+
| coap.dtls | String | DTLS mode (as defined in [section 9 of RFC7252](https://tools.ietf.org/html/rfc7252#section-9)) |
|
90
|
+
| coap.dtls.id | String | DTLS identity |
|
91
|
+
| coap.cbor | Object | Ruby object deserialized from CBOR |
|
12
92
|
|
13
|
-
|
93
|
+
## Benchmarks
|
14
94
|
|
15
|
-
|
95
|
+
David handles about 10.000 requests per second (tested in MRI 2.2.0 with up to
|
96
|
+
10.000 concurrent clients on a single core of a Core i7-3520M CPU running Linux
|
97
|
+
3.18.5).
|
16
98
|
|
17
99
|
## Copyright
|
18
100
|
|
data/benchmarks/Gemfile
CHANGED
data/benchmarks/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../coap
|
3
3
|
specs:
|
4
|
-
coap (0.0
|
4
|
+
coap (0.1.0)
|
5
5
|
celluloid-io (~> 0.16, >= 0.16.1)
|
6
6
|
resolv-ipv6favor (~> 0)
|
7
7
|
|
@@ -18,6 +18,7 @@ GEM
|
|
18
18
|
hitimes (1.2.2-java)
|
19
19
|
nio4r (1.1.0)
|
20
20
|
nio4r (1.1.0-java)
|
21
|
+
rack (1.6.0)
|
21
22
|
resolv-ipv6favor (0.0.0)
|
22
23
|
timers (4.0.1)
|
23
24
|
hitimes
|
@@ -29,3 +30,4 @@ PLATFORMS
|
|
29
30
|
DEPENDENCIES
|
30
31
|
benchmark-ips
|
31
32
|
coap!
|
33
|
+
rack
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
[ ! -d coapbench ] && {
|
4
|
+
mkdir -p coapbench
|
5
|
+
cd coapbench
|
6
|
+
|
7
|
+
git clone https://github.com/eclipse/californium.git
|
8
|
+
cd californium
|
9
|
+
mvn clean install
|
10
|
+
cd -
|
11
|
+
|
12
|
+
git clone https://github.com/eclipse/californium.tools.git
|
13
|
+
cd californium.tools
|
14
|
+
mvn clean install
|
15
|
+
cd -
|
16
|
+
|
17
|
+
cd ..
|
18
|
+
}
|
19
|
+
|
20
|
+
java -jar coapbench/californium.tools/run/cf-coapbench-*.jar $@
|
data/benchmarks/quick.sh
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ../..
|
3
|
+
specs:
|
4
|
+
david (0.4.0.pre)
|
5
|
+
celluloid-io (~> 0.16, >= 0.16.1)
|
6
|
+
coap (~> 0.1)
|
7
|
+
rack (~> 1.5)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
actionmailer (4.2.0)
|
13
|
+
actionpack (= 4.2.0)
|
14
|
+
actionview (= 4.2.0)
|
15
|
+
activejob (= 4.2.0)
|
16
|
+
mail (~> 2.5, >= 2.5.4)
|
17
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
18
|
+
actionpack (4.2.0)
|
19
|
+
actionview (= 4.2.0)
|
20
|
+
activesupport (= 4.2.0)
|
21
|
+
rack (~> 1.6.0)
|
22
|
+
rack-test (~> 0.6.2)
|
23
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
24
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
25
|
+
actionview (4.2.0)
|
26
|
+
activesupport (= 4.2.0)
|
27
|
+
builder (~> 3.1)
|
28
|
+
erubis (~> 2.7.0)
|
29
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
30
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
31
|
+
activejob (4.2.0)
|
32
|
+
activesupport (= 4.2.0)
|
33
|
+
globalid (>= 0.3.0)
|
34
|
+
activemodel (4.2.0)
|
35
|
+
activesupport (= 4.2.0)
|
36
|
+
builder (~> 3.1)
|
37
|
+
activerecord (4.2.0)
|
38
|
+
activemodel (= 4.2.0)
|
39
|
+
activesupport (= 4.2.0)
|
40
|
+
arel (~> 6.0)
|
41
|
+
activesupport (4.2.0)
|
42
|
+
i18n (~> 0.7)
|
43
|
+
json (~> 1.7, >= 1.7.7)
|
44
|
+
minitest (~> 5.1)
|
45
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
46
|
+
tzinfo (~> 1.1)
|
47
|
+
arel (6.0.0)
|
48
|
+
axiom-types (0.1.1)
|
49
|
+
descendants_tracker (~> 0.0.4)
|
50
|
+
ice_nine (~> 0.11.0)
|
51
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
52
|
+
builder (3.2.2)
|
53
|
+
celluloid (0.16.0)
|
54
|
+
timers (~> 4.0.0)
|
55
|
+
celluloid-io (0.16.2)
|
56
|
+
celluloid (>= 0.16.0)
|
57
|
+
nio4r (>= 1.1.0)
|
58
|
+
coap (0.1.0)
|
59
|
+
celluloid-io (~> 0.16, >= 0.16.1)
|
60
|
+
resolv-ipv6favor (~> 0)
|
61
|
+
coercible (1.0.0)
|
62
|
+
descendants_tracker (~> 0.0.1)
|
63
|
+
descendants_tracker (0.0.4)
|
64
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
65
|
+
equalizer (0.0.9)
|
66
|
+
erubis (2.7.0)
|
67
|
+
globalid (0.3.0)
|
68
|
+
activesupport (>= 4.1.0)
|
69
|
+
grape (0.10.1)
|
70
|
+
activesupport
|
71
|
+
builder
|
72
|
+
hashie (>= 2.1.0)
|
73
|
+
multi_json (>= 1.3.2)
|
74
|
+
multi_xml (>= 0.5.2)
|
75
|
+
rack (>= 1.3.0)
|
76
|
+
rack-accept
|
77
|
+
rack-mount
|
78
|
+
virtus (>= 1.0.0)
|
79
|
+
hashie (3.4.0)
|
80
|
+
hike (1.2.3)
|
81
|
+
hitimes (1.2.2)
|
82
|
+
i18n (0.7.0)
|
83
|
+
ice_nine (0.11.1)
|
84
|
+
json (1.8.2)
|
85
|
+
loofah (2.0.1)
|
86
|
+
nokogiri (>= 1.5.9)
|
87
|
+
mail (2.6.3)
|
88
|
+
mime-types (>= 1.16, < 3)
|
89
|
+
mime-types (2.4.3)
|
90
|
+
mini_portile (0.6.2)
|
91
|
+
minitest (5.5.1)
|
92
|
+
multi_json (1.10.1)
|
93
|
+
multi_xml (0.5.5)
|
94
|
+
nio4r (1.1.0)
|
95
|
+
nokogiri (1.6.6.2)
|
96
|
+
mini_portile (~> 0.6.0)
|
97
|
+
rack (1.6.0)
|
98
|
+
rack-accept (0.4.5)
|
99
|
+
rack (>= 0.4)
|
100
|
+
rack-mount (0.8.3)
|
101
|
+
rack (>= 1.0.0)
|
102
|
+
rack-test (0.6.3)
|
103
|
+
rack (>= 1.0)
|
104
|
+
rails (4.2.0)
|
105
|
+
actionmailer (= 4.2.0)
|
106
|
+
actionpack (= 4.2.0)
|
107
|
+
actionview (= 4.2.0)
|
108
|
+
activejob (= 4.2.0)
|
109
|
+
activemodel (= 4.2.0)
|
110
|
+
activerecord (= 4.2.0)
|
111
|
+
activesupport (= 4.2.0)
|
112
|
+
bundler (>= 1.3.0, < 2.0)
|
113
|
+
railties (= 4.2.0)
|
114
|
+
sprockets-rails
|
115
|
+
rails-deprecated_sanitizer (1.0.3)
|
116
|
+
activesupport (>= 4.2.0.alpha)
|
117
|
+
rails-dom-testing (1.0.5)
|
118
|
+
activesupport (>= 4.2.0.beta, < 5.0)
|
119
|
+
nokogiri (~> 1.6.0)
|
120
|
+
rails-deprecated_sanitizer (>= 1.0.1)
|
121
|
+
rails-html-sanitizer (1.0.1)
|
122
|
+
loofah (~> 2.0)
|
123
|
+
railties (4.2.0)
|
124
|
+
actionpack (= 4.2.0)
|
125
|
+
activesupport (= 4.2.0)
|
126
|
+
rake (>= 0.8.7)
|
127
|
+
thor (>= 0.18.1, < 2.0)
|
128
|
+
rake (10.4.2)
|
129
|
+
resolv-ipv6favor (0.0.0)
|
130
|
+
sprockets (2.12.3)
|
131
|
+
hike (~> 1.2)
|
132
|
+
multi_json (~> 1.0)
|
133
|
+
rack (~> 1.0)
|
134
|
+
tilt (~> 1.1, != 1.3.0)
|
135
|
+
sprockets-rails (2.2.4)
|
136
|
+
actionpack (>= 3.0)
|
137
|
+
activesupport (>= 3.0)
|
138
|
+
sprockets (>= 2.8, < 4.0)
|
139
|
+
thor (0.19.1)
|
140
|
+
thread_safe (0.3.4)
|
141
|
+
tilt (1.4.1)
|
142
|
+
timers (4.0.1)
|
143
|
+
hitimes
|
144
|
+
tzinfo (1.2.2)
|
145
|
+
thread_safe (~> 0.1)
|
146
|
+
virtus (1.0.4)
|
147
|
+
axiom-types (~> 0.1)
|
148
|
+
coercible (~> 1.0)
|
149
|
+
descendants_tracker (~> 0.0, >= 0.0.3)
|
150
|
+
equalizer (~> 0.0, >= 0.0.9)
|
151
|
+
|
152
|
+
PLATFORMS
|
153
|
+
ruby
|
154
|
+
|
155
|
+
DEPENDENCIES
|
156
|
+
david!
|
157
|
+
grape
|
158
|
+
rack
|
159
|
+
rails (~> 4.2.0)
|