protobuf 2.6.4 → 2.6.5
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/README.md +168 -44
- data/ext/ruby_generator/extconf.rb +1 -2
- data/lib/protobuf/enum.rb +1 -1
- data/lib/protobuf/version.rb +1 -1
- data/spec/lib/protobuf/enum_spec.rb +4 -0
- metadata +97 -113
data/README.md
CHANGED
@@ -3,21 +3,53 @@
|
|
3
3
|
[](http://badge.fury.io/rb/protobuf)
|
4
4
|
[](https://travis-ci.org/localshred/protobuf)
|
5
5
|
|
6
|
-
|
6
|
+
___IMPORTANT: Those upgrading from version 1.4.2 to 2.X should read the
|
7
|
+
[UPGRADING.md](https://github.com/localshred/protobuf/blob/master/UPGRADING.md) notes___
|
7
8
|
|
8
|
-
Protobuf is an implementation of [Google's protocol buffers][google-pb] in ruby.
|
9
|
+
Protobuf is an implementation of [Google's protocol buffers][google-pb] in ruby.
|
10
|
+
We currently support version 2.4.1 with support for the new 2.5 coming shortly after
|
11
|
+
it becomes final.
|
9
12
|
|
10
|
-
|
11
|
-
2. Provide an RPC mechanism for calling remote services.
|
12
|
-
3. Provide RPC interop between ruby and other protobuf-rpc aware implementations for different languages (e.g. [protobuf-socket-rpc][]).
|
13
|
+
---
|
13
14
|
|
14
|
-
|
15
|
+
## Install
|
15
16
|
|
16
|
-
|
17
|
+
You will likely need to install protobuf from your favorite package manager
|
18
|
+
or from source. This gem currently supports protobuf 2.4.1. You may alternatively
|
19
|
+
specify a `PROTOC_SRC` when installing with rubygems (see below).
|
20
|
+
|
21
|
+
### OSX Install
|
22
|
+
|
23
|
+
```shell
|
24
|
+
$ brew install protobuf
|
25
|
+
```
|
26
|
+
|
27
|
+
### Ubuntu
|
28
|
+
```shell
|
29
|
+
$ sudo apt-get install -y protobuf
|
30
|
+
```
|
31
|
+
|
32
|
+
### Gem Install
|
33
|
+
|
34
|
+
Once the protobuf package is installed, go ahead and install with rubygems.
|
35
|
+
If you'd like to skip installing the protobuf package (above) and specify an
|
36
|
+
alternate location for the protobuf package, for instance if you have a custom
|
37
|
+
protoc package, then specify it with `PROTOC_SRC=/path/to/src`.
|
38
|
+
_Please note that this will void your warranty as it were. If you compiled with
|
39
|
+
a custom protobuf package and are having issues it may be difficult to troubleshoot._
|
17
40
|
|
18
|
-
|
41
|
+
```shell
|
42
|
+
$ gem install protobuf
|
19
43
|
|
20
|
-
|
44
|
+
# Provide an alternative protoc source directory to build from.
|
45
|
+
$ PROTOC_SRC=/path/to/protobuf/src gem install protobuf
|
46
|
+
```
|
47
|
+
|
48
|
+
## 1. Generating ruby classes from `.proto` files
|
49
|
+
|
50
|
+
Protocol Buffers are great because they allow you to clearly define data storage
|
51
|
+
or data transfer packets. Google officially supports Java, C++, and Python for
|
52
|
+
compilation and usage. Let's make it ruby aware!
|
21
53
|
|
22
54
|
Let's say you have a `defs.proto` file that defines a User message.
|
23
55
|
|
@@ -35,7 +67,10 @@ Now let's compile that definition to ruby:
|
|
35
67
|
$ rprotoc defs.proto --ruby_out ./lib
|
36
68
|
```
|
37
69
|
|
38
|
-
The previous line will take whatever is defined in `defs.proto` and
|
70
|
+
The previous line will take whatever is defined in `defs.proto` and
|
71
|
+
output ruby classes to the `./lib` directory, obeying the package
|
72
|
+
directive. Assuming that's all `defs.proto` had defined, `./lib`
|
73
|
+
should now look like this:
|
39
74
|
|
40
75
|
```
|
41
76
|
- lib
|
@@ -56,9 +91,12 @@ module Foo
|
|
56
91
|
end
|
57
92
|
```
|
58
93
|
|
59
|
-
|
94
|
+
___Note:__ The generator will pre-define all the classes empty and then
|
95
|
+
re-open to apply the defined fields. This is an optomization to prevent
|
96
|
+
recursive field errors._
|
60
97
|
|
61
|
-
The generated class is now just a plain old ruby object and you
|
98
|
+
The generated class is now just a plain old ruby object and you
|
99
|
+
can use it however you wish.
|
62
100
|
|
63
101
|
```ruby
|
64
102
|
require 'lib/foo/user.pb'
|
@@ -77,7 +115,10 @@ user.last_name # => Christmas
|
|
77
115
|
|
78
116
|
### Message (de)serialization
|
79
117
|
|
80
|
-
Every message object comes ready for serialization or deserialization.
|
118
|
+
Every message object comes ready for serialization or deserialization.
|
119
|
+
Use `serialize_to_string` to write out the byte-string for the message.
|
120
|
+
Use `parse_from_string` on a new message instance to inflate the
|
121
|
+
byte-string back to a message in ruby.
|
81
122
|
|
82
123
|
```ruby
|
83
124
|
user = Foo::User.new(:first_name => 'Bob')
|
@@ -90,13 +131,21 @@ inflated_user == user #=> true
|
|
90
131
|
|
91
132
|
## 2. RPC
|
92
133
|
|
93
|
-
RPC is one of many technologies that tries to solve the problem of getting
|
134
|
+
RPC is one of many technologies that tries to solve the problem of getting
|
135
|
+
smaller pieces of data from one place to another. Many will argue for or
|
136
|
+
against RPC and its usefulness, but I'm not going to do that here. Google's
|
137
|
+
Protocol Buffers provides support for Services with RPC and that's why you're here.
|
94
138
|
|
95
|
-
Any discussion about RPC leads to a discussion about clients and servers
|
139
|
+
Any discussion about RPC leads to a discussion about clients and servers
|
140
|
+
and the remote procedures themselves. For our purposes, we'll talk about
|
141
|
+
a `Client` (process that is calling the server/service), a `Service`
|
142
|
+
(the remote procedure), and a `Server` (the process that manages one or more
|
143
|
+
services). We'll start with the Service first.
|
96
144
|
|
97
145
|
### Services
|
98
146
|
|
99
|
-
Services are simply classes that have endpoint methods defined. Here's what
|
147
|
+
Services are simply classes that have endpoint methods defined. Here's what
|
148
|
+
one looks like in protobuf:
|
100
149
|
|
101
150
|
```
|
102
151
|
package foo;
|
@@ -124,11 +173,15 @@ module Foo
|
|
124
173
|
end
|
125
174
|
```
|
126
175
|
|
127
|
-
|
176
|
+
__Important Note: The UserService class here is a *stub*. You should not
|
177
|
+
provide your implementation in this generated file as subsequent generations
|
178
|
+
will wipe out your implmentation. Read on to learn how to use this stub.__
|
128
179
|
|
129
180
|
Did you read the note above? Go read it. I'll wait.
|
130
181
|
|
131
|
-
Ok, now that you have a generated service stub, you'll want to require it
|
182
|
+
Ok, now that you have a generated service stub, you'll want to require it
|
183
|
+
from `lib` and implement the methods. Create a service implementation file
|
184
|
+
in your project. In rails I'd put this in `app/services/user_service.rb`.
|
132
185
|
|
133
186
|
```ruby
|
134
187
|
# app/services/user_service.rb
|
@@ -152,15 +205,27 @@ module Foo
|
|
152
205
|
end
|
153
206
|
```
|
154
207
|
|
155
|
-
Simply implement the instance method for the defined rpc. You can provide
|
156
|
-
|
157
|
-
|
208
|
+
Simply implement the instance method for the defined rpc. You can provide
|
209
|
+
any other methods in this class as helpers, but only those defined in the
|
210
|
+
proto file will be callable by remote clients. Every request made by a client
|
211
|
+
will provide a non-empty request of the defined type. The server creates a new
|
212
|
+
service instance based on the request, so you should not be constrained to just
|
213
|
+
the endpoint method. This is similar to rails controllers where only methods
|
214
|
+
defined by the routes file are hooked up to HTTP requests, but it's very common
|
215
|
+
to implement private methods to aid in code quality and simpilicity.
|
216
|
+
|
217
|
+
Every instance has a `request` and `response` object used for fulfilling the call,
|
218
|
+
again, similar to a rails controller action. You should never attempt to modify the
|
219
|
+
`request` object. The `response` object however should be modified or replaced
|
220
|
+
entirely. If you need to create your own response object (a valid case), simply use
|
221
|
+
`respond_with(new_response)`. The returned object should conform to one of three properties:
|
158
222
|
|
159
223
|
1. Response should be of same type as defined by the rpc definition (in this case, `Foo::UserList`), or
|
160
224
|
2. Response should be a hash. This hash will be used to construct an instance of the defined type and should therefore conform to the appropriate fields for that type.
|
161
225
|
3. Response should respond to the `to_proto` method. The object returned by `to_proto` should be an instance of the defined response type.
|
162
226
|
|
163
|
-
If at any time the implementation encounters an error, the client can be
|
227
|
+
If at any time the implementation encounters an error, the client can be
|
228
|
+
instructed of the error using `rpc_failed`:
|
164
229
|
|
165
230
|
```ruby
|
166
231
|
#...
|
@@ -174,11 +239,16 @@ end
|
|
174
239
|
#...
|
175
240
|
```
|
176
241
|
|
177
|
-
This means that the client's `on_failure` callback will be invoked instead
|
242
|
+
This means that the client's `on_failure` callback will be invoked instead
|
243
|
+
of the `on_success` callback. Read more below on client callbacks. One drawback
|
244
|
+
to the `rpc_failed` approach is that it does not short-circuit the rest of
|
245
|
+
the method. This means that you must explicitly return from the method if
|
246
|
+
you do not wish the remainder to be executed.
|
178
247
|
|
179
248
|
### Service Filters
|
180
249
|
|
181
|
-
Service Filters provides ActionController-style filter support to service
|
250
|
+
Service Filters provides ActionController-style filter support to service
|
251
|
+
instances, specifically adding `before_filter`, `after_filter`, and `around_filter`.
|
182
252
|
|
183
253
|
```ruby
|
184
254
|
require 'lib/foo/user.pb'
|
@@ -223,37 +293,74 @@ end
|
|
223
293
|
|
224
294
|
#### Halting execution of rpc request inside a filter
|
225
295
|
|
226
|
-
__Around Filters__ – Inside of an around filter, if you wish to halt
|
296
|
+
__Around Filters__ – Inside of an around filter, if you wish to halt
|
297
|
+
request processing and return, simply do not `yield` the block. Since the
|
298
|
+
filter is implemented as an instance method, you can use `rpc_failed`
|
299
|
+
or `respond_with` just like you can in the endpoint methods.
|
227
300
|
|
228
|
-
__Before Filters__ – Returning `false` from a before filter will cancel
|
301
|
+
__Before Filters__ – Returning `false` from a before filter will cancel
|
302
|
+
any other filter calls which would run afterwards, as well as canceling
|
303
|
+
invocation of the service method. Note: You must actually return false,
|
304
|
+
not just a "falsey" value such as nil.
|
229
305
|
|
230
|
-
__After Filters__ – There is no request shortcutting since the after
|
306
|
+
__After Filters__ – There is no request shortcutting since the after
|
307
|
+
filter runs after the request. Duh.
|
231
308
|
|
232
309
|
#### Filter options
|
233
310
|
|
234
|
-
The following options can be applied to any of the filters as the final
|
311
|
+
The following options can be applied to any of the filters as the final
|
312
|
+
argument in the filter configuration. (See example above).
|
235
313
|
|
236
|
-
__:if__ – The object supplied to `:if` can either be a symbol/string
|
314
|
+
__:if__ – The object supplied to `:if` can either be a symbol/string
|
315
|
+
indicating the instance method to call, or, an object that responds to `call`.
|
316
|
+
The method or callable should return true or false indicating if the
|
317
|
+
filter should be invoked or not. Akin to the `if` keyword.
|
237
318
|
|
238
|
-
__:unless__ – The opposite of the `:if` option is `:unless`. Accepts
|
319
|
+
__:unless__ – The opposite of the `:if` option is `:unless`. Accepts
|
320
|
+
the same object types. The method or callable should return true or
|
321
|
+
false indicating if the filter should be invoked or not. Akin to the
|
322
|
+
`unless` keyword.
|
239
323
|
|
240
|
-
__:only__ – A string/symbol or Array of strings/symbols values that
|
324
|
+
__:only__ – A string/symbol or Array of strings/symbols values that
|
325
|
+
reference instance methods. The names of these methods should be the
|
326
|
+
rpc method you wish to invoke the filter for. Methods not identified
|
327
|
+
in this list would not have the filter applied.
|
241
328
|
|
242
|
-
__:except__ – The opposite of the `:only` option. A string/symbol or
|
329
|
+
__:except__ – The opposite of the `:only` option. A string/symbol or
|
330
|
+
Array of strings/symbols values that reference instance methods. The
|
331
|
+
names of these methods should be the rpc method you wish to skip
|
332
|
+
invokation of the given filter. Methods not identified in this list
|
333
|
+
would have the filter applied.
|
243
334
|
|
244
335
|
### Servers
|
245
336
|
|
246
|
-
A service is nothing without being hooked up to a socket. It's the
|
337
|
+
A service is nothing without being hooked up to a socket. It's the
|
338
|
+
nerdy kid waiting by the telephone for someone to call without knowing
|
339
|
+
that the phone company disconnected their house. Sad and pathetic.
|
340
|
+
So hook up the phone lines!
|
247
341
|
|
248
342
|
```
|
249
343
|
$ rpc_server -o myserver.com -p 9939 -l ./log/protobuf.log ./config/environment.rb
|
250
344
|
```
|
251
345
|
|
252
|
-
The previous call will start a Socket server running on the given
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
346
|
+
The previous call will start a Socket server running on the given
|
347
|
+
host and port which will load your application into memory. You
|
348
|
+
certainly don't have to run rails or any other framework, just
|
349
|
+
make sure you have some kind of file that will load your services
|
350
|
+
all into memory. The server doesn't know where you put your code,
|
351
|
+
so tell it.
|
352
|
+
|
353
|
+
Be aware that the server needs to be able to translate the socket
|
354
|
+
stream of bytes into an actual protobuf request object. If the
|
355
|
+
definition for that request object aren't known to the server,
|
356
|
+
you're going to have a long day getting this going. It's necessary
|
357
|
+
to store all your definitions and their generated classes in a
|
358
|
+
shared repository (read: gem) so that both client and server have
|
359
|
+
access to the ruby classes in their respective load paths.
|
360
|
+
|
361
|
+
Once the server starts, you should see it as a running process
|
362
|
+
with `ps`. Sending a KILL, QUIT, or TERM signal to the pid will
|
363
|
+
result in shutting the server down gracefully.
|
257
364
|
|
258
365
|
```
|
259
366
|
$ ps aux | grep rpc_server
|
@@ -265,7 +372,8 @@ rpc_server shutdown
|
|
265
372
|
|
266
373
|
### Clients
|
267
374
|
|
268
|
-
A lot of work has gone into making the client calls simple and easy
|
375
|
+
A lot of work has gone into making the client calls simple and easy
|
376
|
+
to use yet still powerful. Clients have a DSL that feels very ajaxy.
|
269
377
|
|
270
378
|
```ruby
|
271
379
|
# require the defs from the shared gem/repo
|
@@ -303,17 +411,33 @@ Foo::UserService.client.find(req) do |c|
|
|
303
411
|
end
|
304
412
|
```
|
305
413
|
|
306
|
-
Many different options can be passed to the `.client` call above
|
414
|
+
Many different options can be passed to the `.client` call above
|
415
|
+
(such as `:timeout => 600`). See the `lib/protobuf/rpc/client.rb`
|
416
|
+
and `lib/protobuf/rpc/service.rb` files for more documentation.
|
307
417
|
|
308
418
|
## 3. RPC Interop
|
309
419
|
|
310
|
-
The main reason I wrote this gem was to provide a ruby implementation
|
420
|
+
The main reason I wrote this gem was to provide a ruby implementation
|
421
|
+
to google's protobuf that worked on the RPC layer with a Java Service
|
422
|
+
layer that was already running [protobuf-socket-rpc][], the supported
|
423
|
+
socket rpc library for protobuf from Google. Other ruby protobuf
|
424
|
+
implementations I've used did not provide this kind of support.
|
311
425
|
|
312
426
|
## Accreditation & Caveats
|
313
427
|
|
314
|
-
It must be noted that this gem was started originally as a fork of
|
315
|
-
|
316
|
-
|
428
|
+
It must be noted that this gem was started originally as a fork of
|
429
|
+
the [ruby-protobuf][old gem] gem. Its authors and I were unable to
|
430
|
+
reach a communication point to be able to merge all of my RPC updates
|
431
|
+
in with their master. Unfortunately I just simply couldn't use their
|
432
|
+
RPC code and so I forked the code. Myself and others have significantly
|
433
|
+
changed the internals of the gem, including the rpc implementation, the
|
434
|
+
message/field implementation, and the compiler implementation. These
|
435
|
+
changes were made to address glaring performance and quality issues
|
436
|
+
in the code. The code was initially diverged at their 0.4.0 version.
|
437
|
+
|
438
|
+
It should also be noted that there are many more features I haven't
|
439
|
+
really shown here, so please let me know if you have any questions
|
440
|
+
on usage or support for various features. Happy protobufing.
|
317
441
|
|
318
442
|
-- BJ Neilsen, [@localshred][]
|
319
443
|
|
@@ -1,8 +1,7 @@
|
|
1
1
|
unless defined?(JRUBY_VERSION)
|
2
2
|
begin
|
3
3
|
require 'mkmf'
|
4
|
-
|
5
|
-
include_directory = File.expand_path(File.join(File.dirname(__FILE__), "..", "protobuf-2.4.1", "src"))
|
4
|
+
include_directory = File.expand_path(ENV['PROTOC_SRC'] || File.join(File.dirname(__FILE__), "..", "protobuf-2.4.1", "src"))
|
6
5
|
|
7
6
|
$CPPFLAGS << " -I#{include_directory}"
|
8
7
|
$CPPFLAGS << " -Wall "
|
data/lib/protobuf/enum.rb
CHANGED
data/lib/protobuf/version.rb
CHANGED
@@ -53,6 +53,10 @@ describe Protobuf::Enum do
|
|
53
53
|
end
|
54
54
|
|
55
55
|
describe '.name_by_value' do
|
56
|
+
it 'get the name by value of the enum given the enum' do
|
57
|
+
Test::EnumTestType.name_by_value(::Test::EnumTestType::THREE).should eq name
|
58
|
+
end
|
59
|
+
|
56
60
|
it 'gets the name of the enum corresponding to the given value (tag)' do
|
57
61
|
Test::EnumTestType.name_by_value(tag).should eq name
|
58
62
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protobuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.6.
|
4
|
+
version: 2.6.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-02-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,15 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0'
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
32
|
name: ffi
|
28
|
-
requirement:
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
36
|
- - ! '>='
|
@@ -33,10 +38,15 @@ dependencies:
|
|
33
38
|
version: '0'
|
34
39
|
type: :runtime
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
37
47
|
- !ruby/object:Gem::Dependency
|
38
48
|
name: multi_json
|
39
|
-
requirement:
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
40
50
|
none: false
|
41
51
|
requirements:
|
42
52
|
- - ! '>='
|
@@ -44,10 +54,15 @@ dependencies:
|
|
44
54
|
version: '0'
|
45
55
|
type: :runtime
|
46
56
|
prerelease: false
|
47
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
48
63
|
- !ruby/object:Gem::Dependency
|
49
64
|
name: thor
|
50
|
-
requirement:
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
51
66
|
none: false
|
52
67
|
requirements:
|
53
68
|
- - ! '>='
|
@@ -55,10 +70,15 @@ dependencies:
|
|
55
70
|
version: '0'
|
56
71
|
type: :runtime
|
57
72
|
prerelease: false
|
58
|
-
version_requirements:
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
59
79
|
- !ruby/object:Gem::Dependency
|
60
80
|
name: eventmachine
|
61
|
-
requirement:
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
62
82
|
none: false
|
63
83
|
requirements:
|
64
84
|
- - ! '>='
|
@@ -66,10 +86,15 @@ dependencies:
|
|
66
86
|
version: '0'
|
67
87
|
type: :development
|
68
88
|
prerelease: false
|
69
|
-
version_requirements:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
70
95
|
- !ruby/object:Gem::Dependency
|
71
96
|
name: ffi-rzmq
|
72
|
-
requirement:
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
73
98
|
none: false
|
74
99
|
requirements:
|
75
100
|
- - ! '>='
|
@@ -77,10 +102,15 @@ dependencies:
|
|
77
102
|
version: '0'
|
78
103
|
type: :development
|
79
104
|
prerelease: false
|
80
|
-
version_requirements:
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
81
111
|
- !ruby/object:Gem::Dependency
|
82
112
|
name: pry
|
83
|
-
requirement:
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
84
114
|
none: false
|
85
115
|
requirements:
|
86
116
|
- - ! '>='
|
@@ -88,10 +118,15 @@ dependencies:
|
|
88
118
|
version: '0'
|
89
119
|
type: :development
|
90
120
|
prerelease: false
|
91
|
-
version_requirements:
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
92
127
|
- !ruby/object:Gem::Dependency
|
93
128
|
name: pry-nav
|
94
|
-
requirement:
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
95
130
|
none: false
|
96
131
|
requirements:
|
97
132
|
- - ! '>='
|
@@ -99,10 +134,15 @@ dependencies:
|
|
99
134
|
version: '0'
|
100
135
|
type: :development
|
101
136
|
prerelease: false
|
102
|
-
version_requirements:
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
103
143
|
- !ruby/object:Gem::Dependency
|
104
144
|
name: rake
|
105
|
-
requirement:
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
106
146
|
none: false
|
107
147
|
requirements:
|
108
148
|
- - ! '>='
|
@@ -110,10 +150,15 @@ dependencies:
|
|
110
150
|
version: '0'
|
111
151
|
type: :development
|
112
152
|
prerelease: false
|
113
|
-
version_requirements:
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
155
|
+
requirements:
|
156
|
+
- - ! '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
114
159
|
- !ruby/object:Gem::Dependency
|
115
160
|
name: rake-compiler
|
116
|
-
requirement:
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
117
162
|
none: false
|
118
163
|
requirements:
|
119
164
|
- - ! '>='
|
@@ -121,10 +166,15 @@ dependencies:
|
|
121
166
|
version: '0'
|
122
167
|
type: :development
|
123
168
|
prerelease: false
|
124
|
-
version_requirements:
|
169
|
+
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ! '>='
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
125
175
|
- !ruby/object:Gem::Dependency
|
126
176
|
name: rspec
|
127
|
-
requirement:
|
177
|
+
requirement: !ruby/object:Gem::Requirement
|
128
178
|
none: false
|
129
179
|
requirements:
|
130
180
|
- - ! '>='
|
@@ -132,10 +182,15 @@ dependencies:
|
|
132
182
|
version: '0'
|
133
183
|
type: :development
|
134
184
|
prerelease: false
|
135
|
-
version_requirements:
|
185
|
+
version_requirements: !ruby/object:Gem::Requirement
|
186
|
+
none: false
|
187
|
+
requirements:
|
188
|
+
- - ! '>='
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
136
191
|
- !ruby/object:Gem::Dependency
|
137
192
|
name: simplecov
|
138
|
-
requirement:
|
193
|
+
requirement: !ruby/object:Gem::Requirement
|
139
194
|
none: false
|
140
195
|
requirements:
|
141
196
|
- - ! '>='
|
@@ -143,10 +198,15 @@ dependencies:
|
|
143
198
|
version: '0'
|
144
199
|
type: :development
|
145
200
|
prerelease: false
|
146
|
-
version_requirements:
|
201
|
+
version_requirements: !ruby/object:Gem::Requirement
|
202
|
+
none: false
|
203
|
+
requirements:
|
204
|
+
- - ! '>='
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '0'
|
147
207
|
- !ruby/object:Gem::Dependency
|
148
208
|
name: yard
|
149
|
-
requirement:
|
209
|
+
requirement: !ruby/object:Gem::Requirement
|
150
210
|
none: false
|
151
211
|
requirements:
|
152
212
|
- - ! '>='
|
@@ -154,7 +214,12 @@ dependencies:
|
|
154
214
|
version: '0'
|
155
215
|
type: :development
|
156
216
|
prerelease: false
|
157
|
-
version_requirements:
|
217
|
+
version_requirements: !ruby/object:Gem::Requirement
|
218
|
+
none: false
|
219
|
+
requirements:
|
220
|
+
- - ! '>='
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
158
223
|
description: Google Protocol Buffers v2.4.1 Serialization and RPC implementation for
|
159
224
|
Ruby.
|
160
225
|
email:
|
@@ -434,7 +499,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
434
499
|
version: '0'
|
435
500
|
segments:
|
436
501
|
- 0
|
437
|
-
hash: -
|
502
|
+
hash: -2629785281422832728
|
438
503
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
439
504
|
none: false
|
440
505
|
requirements:
|
@@ -443,93 +508,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
443
508
|
version: '0'
|
444
509
|
segments:
|
445
510
|
- 0
|
446
|
-
hash: -
|
511
|
+
hash: -2629785281422832728
|
447
512
|
requirements: []
|
448
513
|
rubyforge_project:
|
449
|
-
rubygems_version: 1.8.
|
514
|
+
rubygems_version: 1.8.24
|
450
515
|
signing_key:
|
451
516
|
specification_version: 3
|
452
517
|
summary: Google Protocol Buffers v2.4.1 Serialization and RPC implementation for Ruby.
|
453
|
-
test_files:
|
454
|
-
- spec/benchmark/tasks.rb
|
455
|
-
- spec/functional/embedded_service_spec.rb
|
456
|
-
- spec/functional/evented_server_spec.rb
|
457
|
-
- spec/functional/socket_server_spec.rb
|
458
|
-
- spec/functional/zmq_server_spec.rb
|
459
|
-
- spec/lib/protobuf/cli_spec.rb
|
460
|
-
- spec/lib/protobuf/enum_spec.rb
|
461
|
-
- spec/lib/protobuf/enum_value_spec.rb
|
462
|
-
- spec/lib/protobuf/field/int32_field_spec.rb
|
463
|
-
- spec/lib/protobuf/logger_spec.rb
|
464
|
-
- spec/lib/protobuf/message_spec.rb
|
465
|
-
- spec/lib/protobuf/rpc/client_spec.rb
|
466
|
-
- spec/lib/protobuf/rpc/connector_spec.rb
|
467
|
-
- spec/lib/protobuf/rpc/connectors/base_spec.rb
|
468
|
-
- spec/lib/protobuf/rpc/connectors/common_spec.rb
|
469
|
-
- spec/lib/protobuf/rpc/connectors/socket_spec.rb
|
470
|
-
- spec/lib/protobuf/rpc/connectors/zmq_spec.rb
|
471
|
-
- spec/lib/protobuf/rpc/servers/evented_server_spec.rb
|
472
|
-
- spec/lib/protobuf/rpc/servers/socket_server_spec.rb
|
473
|
-
- spec/lib/protobuf/rpc/servers/zmq/broker_spec.rb
|
474
|
-
- spec/lib/protobuf/rpc/servers/zmq/server_spec.rb
|
475
|
-
- spec/lib/protobuf/rpc/servers/zmq/util_spec.rb
|
476
|
-
- spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb
|
477
|
-
- spec/lib/protobuf/rpc/service_dispatcher_spec.rb
|
478
|
-
- spec/lib/protobuf/rpc/service_filters_spec.rb
|
479
|
-
- spec/lib/protobuf/rpc/service_spec.rb
|
480
|
-
- spec/lib/protobuf_spec.rb
|
481
|
-
- spec/spec_helper.rb
|
482
|
-
- spec/support/all.rb
|
483
|
-
- spec/support/packed_field.rb
|
484
|
-
- spec/support/server.rb
|
485
|
-
- spec/support/test/enum.pb.rb
|
486
|
-
- spec/support/test/enum.proto
|
487
|
-
- spec/support/test/resource.pb.rb
|
488
|
-
- spec/support/test/resource.proto
|
489
|
-
- spec/support/test/resource_service.rb
|
490
|
-
- spec/support/test_app_file.rb
|
491
|
-
- spec/support/tolerance_matcher.rb
|
492
|
-
- test/data/data.bin
|
493
|
-
- test/data/data_source.py
|
494
|
-
- test/data/types.bin
|
495
|
-
- test/data/types_source.py
|
496
|
-
- test/data/unk.png
|
497
|
-
- test/proto/addressbook.pb.rb
|
498
|
-
- test/proto/addressbook.proto
|
499
|
-
- test/proto/addressbook_base.pb.rb
|
500
|
-
- test/proto/addressbook_base.proto
|
501
|
-
- test/proto/addressbook_ext.pb.rb
|
502
|
-
- test/proto/addressbook_ext.proto
|
503
|
-
- test/proto/collision.pb.rb
|
504
|
-
- test/proto/collision.proto
|
505
|
-
- test/proto/ext_collision.pb.rb
|
506
|
-
- test/proto/ext_collision.proto
|
507
|
-
- test/proto/ext_range.pb.rb
|
508
|
-
- test/proto/ext_range.proto
|
509
|
-
- test/proto/float_default.proto
|
510
|
-
- test/proto/lowercase.pb.rb
|
511
|
-
- test/proto/lowercase.proto
|
512
|
-
- test/proto/merge.pb.rb
|
513
|
-
- test/proto/merge.proto
|
514
|
-
- test/proto/nested.pb.rb
|
515
|
-
- test/proto/nested.proto
|
516
|
-
- test/proto/optional_field.pb.rb
|
517
|
-
- test/proto/optional_field.proto
|
518
|
-
- test/proto/packed.pb.rb
|
519
|
-
- test/proto/packed.proto
|
520
|
-
- test/proto/rpc.proto
|
521
|
-
- test/proto/types.pb.rb
|
522
|
-
- test/proto/types.proto
|
523
|
-
- test/test_addressbook.rb
|
524
|
-
- test/test_enum_value.rb
|
525
|
-
- test/test_extension.rb
|
526
|
-
- test/test_lowercase.rb
|
527
|
-
- test/test_message.rb
|
528
|
-
- test/test_optional_field.rb
|
529
|
-
- test/test_packed_field.rb
|
530
|
-
- test/test_parse.rb
|
531
|
-
- test/test_repeated_types.rb
|
532
|
-
- test/test_serialize.rb
|
533
|
-
- test/test_standard_message.rb
|
534
|
-
- test/test_types.rb
|
518
|
+
test_files: []
|
535
519
|
has_rdoc:
|