stn-dcell 0.16.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 +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +7 -0
- data/.rspec +4 -0
- data/.travis.yml +30 -0
- data/CHANGES.md +53 -0
- data/Gemfile +18 -0
- data/LICENSE.txt +20 -0
- data/README.md +168 -0
- data/Rakefile +4 -0
- data/benchmarks/messaging.rb +73 -0
- data/benchmarks/receiver.rb +37 -0
- data/dcell.gemspec +29 -0
- data/examples/itchy.rb +26 -0
- data/examples/scratchy.rb +12 -0
- data/explorer/css/bootstrap-responsive.css +686 -0
- data/explorer/css/bootstrap-responsive.min.css +12 -0
- data/explorer/css/bootstrap.css +3990 -0
- data/explorer/css/bootstrap.min.css +689 -0
- data/explorer/css/explorer.css +28 -0
- data/explorer/ico/favicon.ico +0 -0
- data/explorer/img/glyphicons-halflings-white.png +0 -0
- data/explorer/img/glyphicons-halflings.png +0 -0
- data/explorer/img/logo.png +0 -0
- data/explorer/index.html.erb +94 -0
- data/explorer/js/bootstrap.js +1726 -0
- data/explorer/js/bootstrap.min.js +6 -0
- data/lib/dcell.rb +127 -0
- data/lib/dcell/actor_proxy.rb +30 -0
- data/lib/dcell/celluloid_ext.rb +120 -0
- data/lib/dcell/directory.rb +31 -0
- data/lib/dcell/explorer.rb +74 -0
- data/lib/dcell/future_proxy.rb +32 -0
- data/lib/dcell/global.rb +23 -0
- data/lib/dcell/info_service.rb +122 -0
- data/lib/dcell/mailbox_proxy.rb +53 -0
- data/lib/dcell/messages.rb +65 -0
- data/lib/dcell/node.rb +138 -0
- data/lib/dcell/node_manager.rb +79 -0
- data/lib/dcell/registries/cassandra_adapter.rb +126 -0
- data/lib/dcell/registries/mongodb_adapter.rb +85 -0
- data/lib/dcell/registries/redis_adapter.rb +95 -0
- data/lib/dcell/registries/zk_adapter.rb +123 -0
- data/lib/dcell/responses.rb +16 -0
- data/lib/dcell/router.rb +46 -0
- data/lib/dcell/rpc.rb +95 -0
- data/lib/dcell/rspec.rb +1 -0
- data/lib/dcell/server.rb +73 -0
- data/lib/dcell/version.rb +3 -0
- data/logo.png +0 -0
- data/spec/dcell/actor_proxy_spec.rb +72 -0
- data/spec/dcell/celluloid_ext_spec.rb +32 -0
- data/spec/dcell/directory_spec.rb +22 -0
- data/spec/dcell/explorer_spec.rb +17 -0
- data/spec/dcell/global_spec.rb +25 -0
- data/spec/dcell/node_spec.rb +23 -0
- data/spec/dcell/registries/mongodb_adapter_spec.rb +7 -0
- data/spec/dcell/registries/redis_adapter_spec.rb +6 -0
- data/spec/dcell/registries/zk_adapter_spec.rb +28 -0
- data/spec/options/01-options.rb +10 -0
- data/spec/options/02-registry.rb +13 -0
- data/spec/spec_helper.rb +28 -0
- data/spec/support/helpers.rb +46 -0
- data/spec/support/registry_examples.rb +35 -0
- data/spec/test_node.rb +38 -0
- data/tasks/cassandra.task +84 -0
- data/tasks/rspec.task +7 -0
- data/tasks/zookeeper.task +58 -0
- metadata +239 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 99f99f9345e669d2241b7fce6fc22464cc0d8469
|
4
|
+
data.tar.gz: 604466b8723cb8e228474a4d1f44e1adbab62812
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 673cc9abf920468319875aca305aafd1afa25aa7f69795dd12a693935390c5acb1e2d998118d3b56ba733343e2728e29e4c4c035c94572c42d36803344b6801d
|
7
|
+
data.tar.gz: f162d1bb986e35f1b2d6ff8049d483cc057915dac713556cf44d60fc3c4dceb5bd2430c3d16458f230a5cc63c9bba68a313b8964706b4b37bfb5b3ca4a088796
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service-name: travis-pro
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
language: ruby
|
2
|
+
|
3
|
+
before_install: sudo apt-get install libzmq3-dev
|
4
|
+
|
5
|
+
services:
|
6
|
+
- mongodb
|
7
|
+
- redis-server
|
8
|
+
|
9
|
+
rvm:
|
10
|
+
- 1.9.3
|
11
|
+
- 2.0.0
|
12
|
+
- ruby-head
|
13
|
+
- jruby-19mode
|
14
|
+
- jruby-head
|
15
|
+
- rbx-19mode
|
16
|
+
|
17
|
+
matrix:
|
18
|
+
allow_failures:
|
19
|
+
- rvm: ruby-head
|
20
|
+
- rvm: jruby-head
|
21
|
+
- rvm: jruby-19mode
|
22
|
+
- rvm: rbx-19mode # rbx seems to be losing exception messages o_O
|
23
|
+
|
24
|
+
branches:
|
25
|
+
only:
|
26
|
+
- master
|
27
|
+
|
28
|
+
env:
|
29
|
+
- DCELL_TEST_ADAPTER=redis
|
30
|
+
- DCELL_TEST_ADAPTER=mongodb
|
data/CHANGES.md
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
0.16.0 (2014-09-04)
|
2
|
+
-------------------
|
3
|
+
* Timeouts for cell discovery
|
4
|
+
* Update Explorer to use new Reel API
|
5
|
+
|
6
|
+
0.15.0 (2013-09-04)
|
7
|
+
-------------------
|
8
|
+
* Tracking release for Celluloid 0.15
|
9
|
+
* Use the celluloid-redis gem with the Redis adapter
|
10
|
+
|
11
|
+
0.14.0 (2013-05-07)
|
12
|
+
-------------------
|
13
|
+
* Allow InfoService to run on linux when lsb-release is missing
|
14
|
+
* Remove broken moneta adapter
|
15
|
+
* Use ephemeral mode for ZK adapter
|
16
|
+
* Add support for executing blocks over DCell
|
17
|
+
|
18
|
+
0.13.0
|
19
|
+
------
|
20
|
+
* First semi-stable release in nearly forever! Yay!
|
21
|
+
* Rip out the unstable gossip system, replace the original Zookeeper and
|
22
|
+
Redis adapters.
|
23
|
+
* Compatibility fixes with newer versions of the Celluloid suite
|
24
|
+
|
25
|
+
0.10.0
|
26
|
+
------
|
27
|
+
* DCell::Explorer provides a web UI with Reel
|
28
|
+
* Info service at DCell::Node#[:info]
|
29
|
+
* Distributed gossip protocol, now default adapter
|
30
|
+
* Support for marshaling Celluloid::Futures
|
31
|
+
* Cassandra registry
|
32
|
+
* Initial DCell::NodeManager
|
33
|
+
* celluloid-zmq split out into a separate gem
|
34
|
+
* Use Celluloid.uuid for mailbox and call IDs
|
35
|
+
|
36
|
+
0.9.0
|
37
|
+
-----
|
38
|
+
* Use new Celluloid::ZMQ APIs
|
39
|
+
|
40
|
+
0.8.0
|
41
|
+
-----
|
42
|
+
* Track calls in-flight with DCell::RPC and DCell::RPC::Manager
|
43
|
+
* Compatibility changes for Celluloid 0.8.0
|
44
|
+
|
45
|
+
0.7.1
|
46
|
+
-----
|
47
|
+
* Bump version to match Celluloid
|
48
|
+
* Factor 0MQ bindings into the celluloid-zmq gem
|
49
|
+
* Heartbeat system for detecting downed nodes
|
50
|
+
|
51
|
+
0.0.1
|
52
|
+
-----
|
53
|
+
* Initial release
|
data/Gemfile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
gem 'celluloid', github: 'celluloid/celluloid', tag: 'v0.16.0'
|
4
|
+
gem 'celluloid-io', github: 'celluloid/celluloid-io', tag: 'v0.16.1'
|
5
|
+
gem 'celluloid-zmq', github: 'celluloid/celluloid-zmq', tag: 'v0.16.0'
|
6
|
+
gem 'celluloid-redis', github: 'celluloid/celluloid-redis', branch: 'master'
|
7
|
+
gem 'reel', github: 'celluloid/reel', tag: 'v0.4.0'
|
8
|
+
|
9
|
+
#gem 'ffi-rzmq', github: 'chuckremes/ffi-rzmq'
|
10
|
+
|
11
|
+
gem 'jruby-openssl', platform: :jruby
|
12
|
+
gem 'coveralls', require: false
|
13
|
+
|
14
|
+
# Specify your gem's dependencies in dcell.gemspec
|
15
|
+
gemspec
|
16
|
+
|
17
|
+
gem 'zk'
|
18
|
+
gem 'mongoid'
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2012 Tony Arcieri
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,168 @@
|
|
1
|
+

|
2
|
+
=====
|
3
|
+
[](http://rubygems.org/gems/dcell)
|
4
|
+
[](http://travis-ci.org/celluloid/dcell)
|
5
|
+
[](https://codeclimate.com/github/celluloid/dcell)
|
6
|
+
[](https://coveralls.io/r/celluloid/dcell)
|
7
|
+
|
8
|
+
> "Objects can message objects transparently that live on other machines
|
9
|
+
> over the network, and you don't have to worry about the networking gunk,
|
10
|
+
> and you don't have to worry about finding them, and you don't have to
|
11
|
+
> worry about anything. It's just as if you messaged an object that's
|
12
|
+
> right next door."
|
13
|
+
> _--Steve Jobs describing the NeXT Portable Distributed Object system_
|
14
|
+
|
15
|
+
DCell is a simple and easy way to build distributed applications in Ruby.
|
16
|
+
Somewhat similar to DRb, DCell lets you easily expose Ruby objects as network
|
17
|
+
services, and call them remotely just like you would any other Ruby object.
|
18
|
+
However, unlike DRb all objects in the system are concurrent. You can create
|
19
|
+
and register several available services on a given node, obtain handles to
|
20
|
+
them, and easily pass these handles around the network just like any other
|
21
|
+
objects.
|
22
|
+
|
23
|
+
DCell is a distributed extension to [Celluloid][celluloid], which provides
|
24
|
+
concurrent objects for Ruby with many of the features of Erlang, such as the
|
25
|
+
ability to supervise objects and restart them when they crash, and also link to
|
26
|
+
other objects and receive event notifications of when they crash. This makes
|
27
|
+
it easier to build robust, fault-tolerant distributed systems.
|
28
|
+
|
29
|
+
DCell uses the [0MQ][zeromq] messaging protocol which provides a robust,
|
30
|
+
fault-tolerant brokerless transport for asynchronous messages sent between
|
31
|
+
nodes. DCell is built on top of the [Celluloid::ZMQ][celluloid-zmq] library,
|
32
|
+
which provides a Celluloid-oriented wrapper around the underlying
|
33
|
+
[ffi-rzmq][ffi-rzmq] library.
|
34
|
+
|
35
|
+
[Please see the DCell Wiki](https://github.com/celluloid/dcell/wiki)
|
36
|
+
for more detailed documentation and usage notes.
|
37
|
+
|
38
|
+
Like DCell? [Join the Celluloid Google Group][googlegroup]
|
39
|
+
|
40
|
+
[celluloid]: http://celluloid.io/
|
41
|
+
[zeromq]: http://www.zeromq.org/
|
42
|
+
[celluloid-zmq]: https://github.com/celluloid/celluloid-zmq
|
43
|
+
[ffi-rzmq]: https://github.com/chuckremes/ffi-rzmq
|
44
|
+
[googlegroup]: http://groups.google.com/group/celluloid-ruby
|
45
|
+
|
46
|
+
### Is it any good?
|
47
|
+
|
48
|
+
[Yes.](http://news.ycombinator.com/item?id=3067434)
|
49
|
+
|
50
|
+
### Is It "Production Ready™"?
|
51
|
+
|
52
|
+
Not entirely, but eager early adopters are welcome!
|
53
|
+
|
54
|
+
Installation
|
55
|
+
------------
|
56
|
+
|
57
|
+
Add this line to your application's Gemfile:
|
58
|
+
|
59
|
+
gem 'dcell'
|
60
|
+
|
61
|
+
And then execute:
|
62
|
+
|
63
|
+
$ bundle
|
64
|
+
|
65
|
+
Or install it yourself as:
|
66
|
+
|
67
|
+
$ gem install dcell
|
68
|
+
|
69
|
+
Inside of your Ruby program do:
|
70
|
+
|
71
|
+
require 'dcell'
|
72
|
+
|
73
|
+
...to pull it in as a dependency.
|
74
|
+
|
75
|
+
Example
|
76
|
+
-------
|
77
|
+
|
78
|
+
Copy and paste this into `itchy.rb` (or run `bundle exec examples/itchy.rb`):
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
require 'dcell'
|
82
|
+
|
83
|
+
DCell.start :id => "itchy", :addr => "tcp://127.0.0.1:9001"
|
84
|
+
|
85
|
+
class Itchy
|
86
|
+
include Celluloid
|
87
|
+
|
88
|
+
def initialize
|
89
|
+
puts "Ready for mayhem!"
|
90
|
+
@n = 0
|
91
|
+
end
|
92
|
+
|
93
|
+
def fight
|
94
|
+
@n = (@n % 6) + 1
|
95
|
+
if @n <= 3
|
96
|
+
puts "Bite!"
|
97
|
+
else
|
98
|
+
puts "Fight!"
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
Itchy.supervise_as :itchy
|
104
|
+
sleep
|
105
|
+
```
|
106
|
+
|
107
|
+
You can now launch itchy with:
|
108
|
+
|
109
|
+
```
|
110
|
+
ruby itchy.rb
|
111
|
+
```
|
112
|
+
|
113
|
+
Now copy and paste the following into `scratchy.rb` (also in examples)
|
114
|
+
|
115
|
+
```ruby
|
116
|
+
require 'dcell'
|
117
|
+
|
118
|
+
DCell.start :id => "scratchy", :addr => "tcp://127.0.0.1:9002"
|
119
|
+
itchy_node = DCell::Node["itchy"]
|
120
|
+
|
121
|
+
puts "Fighting itchy! (check itchy's output)"
|
122
|
+
|
123
|
+
6.times do
|
124
|
+
itchy_node[:itchy].fight
|
125
|
+
sleep 1
|
126
|
+
end
|
127
|
+
```
|
128
|
+
|
129
|
+
Now run scratchy side-by-side with itchy. You should see this on itchy:
|
130
|
+
|
131
|
+
```
|
132
|
+
$ bundle exec examples/itchy.rb
|
133
|
+
Ready for mayhem!
|
134
|
+
I, [2012-12-25T22:52:45.362355 #74272] INFO -- : Connected to scratchy
|
135
|
+
Bite!
|
136
|
+
Bite!
|
137
|
+
Bite!
|
138
|
+
Fight!
|
139
|
+
Fight!
|
140
|
+
Fight!
|
141
|
+
```
|
142
|
+
|
143
|
+
This is a basic example how individual DCell::Nodes have registered Celluloid actors which can be accessed remotely by other DCell::Nodes.
|
144
|
+
|
145
|
+
Supported Platforms
|
146
|
+
-------------------
|
147
|
+
|
148
|
+
DCell works on Ruby 1.9.3, JRuby 1.6, and Rubinius 2.0.
|
149
|
+
|
150
|
+
DCell requires Ruby 1.9 mode on all interpreters. This works out of the
|
151
|
+
box on MRI/YARV, and requires the following flags elsewhere:
|
152
|
+
|
153
|
+
* JRuby: --1.9 command line option, or JRUBY_OPTS=--1.9 environment variable
|
154
|
+
* rbx: -X19 command line option
|
155
|
+
|
156
|
+
Contributing to DCell
|
157
|
+
-------------------------
|
158
|
+
|
159
|
+
* Fork this repository on github
|
160
|
+
* Make your changes and send me a pull request
|
161
|
+
* If I like them I'll merge them
|
162
|
+
* If I've accepted a patch, feel free to ask for commit access
|
163
|
+
|
164
|
+
Copyright
|
165
|
+
---------
|
166
|
+
|
167
|
+
Copyright (c) 2012 Tony Arcieri. Distributed under the MIT License.
|
168
|
+
See LICENSE.txt for further details.
|
data/Rakefile
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'benchmark'
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'bundler'
|
7
|
+
Bundler.setup
|
8
|
+
|
9
|
+
require 'dcell'
|
10
|
+
DCell.setup
|
11
|
+
DCell.run!
|
12
|
+
|
13
|
+
RECEIVER_PORT = 2043
|
14
|
+
|
15
|
+
$receiver_pid = Process.spawn Gem.ruby, File.expand_path("../receiver.rb", __FILE__)
|
16
|
+
STDERR.print "Waiting for test node to start up..."
|
17
|
+
|
18
|
+
socket = nil
|
19
|
+
30.times do
|
20
|
+
begin
|
21
|
+
socket = TCPSocket.open("127.0.0.1", RECEIVER_PORT)
|
22
|
+
break if socket
|
23
|
+
rescue Errno::ECONNREFUSED
|
24
|
+
STDERR.print "."
|
25
|
+
sleep 1
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
if socket
|
30
|
+
STDERR.puts " done!"
|
31
|
+
socket.close
|
32
|
+
else
|
33
|
+
STDERR.puts " FAILED!"
|
34
|
+
raise "couldn't connect to test node!"
|
35
|
+
end
|
36
|
+
|
37
|
+
class AsyncPerformanceTest
|
38
|
+
include Celluloid
|
39
|
+
|
40
|
+
def initialize(progenator, n = 10000)
|
41
|
+
@n = n
|
42
|
+
@receiver = progenator.spawn_async_receiver(n, current_actor)
|
43
|
+
end
|
44
|
+
|
45
|
+
def run
|
46
|
+
@n.times { @receiver.async.increment }
|
47
|
+
wait :complete
|
48
|
+
end
|
49
|
+
|
50
|
+
def complete
|
51
|
+
signal :complete
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
DCell.start :id => "messaging_node", :addr => "tcp://127.0.0.1:2042",
|
56
|
+
:directory => {
|
57
|
+
:id => "benchmark_receiver",
|
58
|
+
:addr => "tcp://127.0.0.1:#{RECEIVER_PORT}"
|
59
|
+
}
|
60
|
+
|
61
|
+
receiver = DCell::Node['benchmark_receiver']
|
62
|
+
progenator = receiver[:progenator]
|
63
|
+
|
64
|
+
test = AsyncPerformanceTest.new progenator
|
65
|
+
time = Benchmark.measure { test.run }.real
|
66
|
+
messages_per_second = 1 / time * 10000
|
67
|
+
|
68
|
+
puts "messages_per_second: #{"%0.2f" % messages_per_second}"
|
69
|
+
|
70
|
+
Process.kill 9, $receiver_pid
|
71
|
+
Process.wait $receiver_pid rescue nil
|
72
|
+
|
73
|
+
exit 0
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
Bundler.setup
|
4
|
+
|
5
|
+
require 'dcell'
|
6
|
+
DCell.start :id => 'benchmark_receiver', :addr => 'tcp://127.0.0.1:2043'
|
7
|
+
|
8
|
+
class AsyncReceiver
|
9
|
+
include Celluloid
|
10
|
+
attr_reader :count
|
11
|
+
|
12
|
+
def initialize(n, actor)
|
13
|
+
@n, @actor = n, actor
|
14
|
+
@count = 0
|
15
|
+
end
|
16
|
+
|
17
|
+
def increment
|
18
|
+
@count += 1
|
19
|
+
@actor.async.complete if @count == @n
|
20
|
+
@count
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class Progenator
|
25
|
+
include Celluloid
|
26
|
+
|
27
|
+
def spawn_async_receiver(n, actor)
|
28
|
+
AsyncReceiver.new(n, actor)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class BenchmarkApplication < Celluloid::SupervisionGroup
|
33
|
+
supervise DCell::SupervisionGroup
|
34
|
+
supervise Progenator, :as => :progenator
|
35
|
+
end
|
36
|
+
|
37
|
+
BenchmarkApplication.run
|
data/dcell.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "dcell/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
gem.name = "stn-dcell"
|
7
|
+
gem.version = DCell::VERSION
|
8
|
+
gem.license = 'MIT'
|
9
|
+
gem.authors = ["Tony Arcieri"]
|
10
|
+
gem.email = ["tony.arcieri@gmail.com"]
|
11
|
+
gem.homepage = "http://github.com/celluloid/dcell"
|
12
|
+
gem.summary = "An asynchronous distributed object framework based on Celluloid"
|
13
|
+
gem.description = "DCell is an distributed object framework based on Celluloid built on 0MQ and Zookeeper"
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split("\n")
|
16
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
|
20
|
+
gem.add_runtime_dependency "celluloid", "~> 0.16.0"
|
21
|
+
gem.add_runtime_dependency "celluloid-zmq", "~> 0.16.0"
|
22
|
+
gem.add_runtime_dependency "reel", "~> 0.4.0"
|
23
|
+
gem.add_runtime_dependency "http", "~> 0.5.0"
|
24
|
+
gem.add_runtime_dependency "celluloid-redis"
|
25
|
+
gem.add_runtime_dependency "redis-namespace"
|
26
|
+
|
27
|
+
gem.add_development_dependency "rake"
|
28
|
+
gem.add_development_dependency "rspec", "~> 2.14.0"
|
29
|
+
end
|