protobuf 2.6.4 → 2.6.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -3,21 +3,53 @@
3
3
  [![Gem Version](https://badge.fury.io/rb/protobuf.png)](http://badge.fury.io/rb/protobuf)
4
4
  [![Build Status](https://secure.travis-ci.org/localshred/protobuf.png?branch=master)](https://travis-ci.org/localshred/protobuf)
5
5
 
6
- ***IMPORTANT: Those upgrading from version 1.4.2 to 2.X should read the [UPGRADING.md](https://github.com/localshred/protobuf/blob/master/UPGRADING.md) notes***
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. We currently support version 2.4.1 with support for the new 2.5 coming shortly after it becomes final. It's a gem for managing 3 things:
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
- 1. Generating ruby classes from `.proto` files.
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
- So let's dive in and see how to work with all three.
15
+ ## Install
15
16
 
16
- ## 1. Generating ruby classes from `.proto` files
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
- _The `protobuf` package is required for compilation. Mac: `brew install protobuf`, Ubuntu: `sudo apt-get install -y protobuf`_
41
+ ```shell
42
+ $ gem install protobuf
19
43
 
20
- Protocol Buffers are great because they allow you to clearly define data storage or data transfer packets. Google officially supports Java, C++, and Python for compilation and usage. Let's make it ruby aware!
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 output ruby classes to the `./lib` directory, obeying the package directive. Assuming that's all `defs.proto` had defined, `./lib` should now look like this:
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
- _Note: The generator will pre-define all the classes empty and then re-open to apply the defined fields. This is an optomization to prevent recursive field errors._
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 can use it however you wish.
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. Use `serialize_to_string` to write out the byte-string for the message. Use `parse_from_string` on a new message instance to inflate the byte-string back to a message in ruby.
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 smaller pieces of data from one place to another. Many will argue for or against RPC and its usefulness, but I'm not going to do that here. Google's Protocol Buffers provides support for Services with RPC and that's why you're here.
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 and the remote procedures themselves. For our purposes, we'll talk about a `Client` (process that is calling the server/service), a `Service` (the remote procedure), and a `Server` (the process that manages one or more services). We'll start with the Service first.
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 one looks like in protobuf:
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
- **Important Note: The UserService class here is a *stub*. You should not provide your implementation in this generated file as subsequent generations will wipe out your implmentation. Read on to learn how to use this stub.**
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 from `lib` and implement the methods. Create a service implementation file in your project. In rails I'd put this in `app/services/user_service.rb`.
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 any other methods in this class as helpers, but only those defined in the proto file will be callable by remote clients. Every request made by a client will provide a non-empty request of the defined type. The server creates a new service instance based on the request, so you should not be constrained to just the endpoint method. This is similar to rails controllers where only methods defined by the routes file are hooked up to HTTP requests, but it's very common to implement private methods to aid in code quality and simpilicity.
156
-
157
- Every instance has a `request` and `response` object used for fulfilling the call, again, similar to a rails controller action. You should never attempt to modify the `request` object. The `response` object however should be modified or replaced entirely. If you need to create your own response object (a valid case), simply use `respond_with(new_response)`. The returned object should conform to one of three properties:
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 instructed of the error using `rpc_failed`:
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 of the `on_success` callback. Read more below on client callbacks. One drawback to the `rpc_failed` approach is that it does not short-circuit the rest of the method. This means that you must explicitly return from the method if you do not wish the remainder to be executed.
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 instances, specifically adding `before_filter`, `after_filter`, and `around_filter`.
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 request processing and return, simply do not `yield` the block. Since the filter is implemented as an instance method, you can use `rpc_failed` or `respond_with` just like you can in the endpoint methods.
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 any other filter calls which would run afterwards, as well as canceling invocation of the service method. Note: You must actually return false, not just a "falsey" value such as nil.
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 filter runs after the request. Duh.
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 argument in the filter configuration. (See example above).
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 indicating the instance method to call, or, an object that responds to `call`. The method or callable should return true or false indicating if the filter should be invoked or not. Akin to the `if` keyword.
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 the same object types. The method or callable should return true or false indicating if the filter should be invoked or not. Akin to the `unless` keyword.
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 reference instance methods. The names of these methods should be the rpc method you wish to invoke the filter for. Methods not identified in this list would not have the filter applied.
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 Array of strings/symbols values that reference instance methods. The names of these methods should be the rpc method you wish to skip invokation of the given filter. Methods not identified in this list would have the filter applied.
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 nerdy kid waiting by the telephone for someone to call without knowing that the phone company disconnected their house. Sad and pathetic. So hook up the phone lines!
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 host and port which will load your application into memory. You certainly don't have to run rails or any other framework, just make sure you have some kind of file that will load your services all into memory. The server doesn't know where you put your code, so tell it.
253
-
254
- Be aware that the server needs to be able to translate the socket stream of bytes into an actual protobuf request object. If the definition for that request object aren't known to the server, you're going to have a long day getting this going. It's necessary to store all your definitions and their generated classes in a shared repository (read: gem) so that both client and server have access to the ruby classes in their respective load paths.
255
-
256
- Once the server starts, you should see it as a running process with `ps`. Sending a KILL, QUIT, or TERM signal to the pid will result in shutting the server down gracefully.
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 to use yet still powerful. Clients have a DSL that feels very ajaxy.
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 (such as `:timeout => 600`). See the `lib/protobuf/rpc/client.rb` and `lib/protobuf/rpc/service.rb` files for more documentation.
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 to google's protobuf that worked on the RPC layer with a Java Service layer that was already running [protobuf-socket-rpc][], the supported socket rpc library for protobuf from Google. Other ruby protobuf implementations I've used did not provide this kind of support.
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 the [ruby-protobuf][old gem] gem. Its authors and I were unable to reach a communication point to be able to merge all of my RPC updates in with their master. Unfortunately I just simply couldn't use their RPC code and so I forked the code. Myself and others have significantly changed the internals of the gem, including the rpc implementation, the message/field implementation, and the compiler implementation. These changes were made to address glaring performance and quality issues in the code. The code was initially diverged at their 0.4.0 version.
315
-
316
- It should also be noted that there are many more features I haven't really shown here, so please let me know if you have any questions on usage or support for various features. Happy protobufing.
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
@@ -33,7 +33,7 @@ module Protobuf
33
33
  end
34
34
 
35
35
  def self.name_by_value(value)
36
- value.nil? ? nil : @names[value]
36
+ (!value.nil? && value.respond_to?(:to_i)) ? @names[value.to_i] : nil
37
37
  end
38
38
 
39
39
  def self.valid_tag?(tag)
@@ -1,4 +1,4 @@
1
1
  module Protobuf
2
- VERSION = '2.6.4'
2
+ VERSION = '2.6.5'
3
3
  PROTOC_VERSION = '2.4.1'
4
4
  end
@@ -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
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-01-28 00:00:00.000000000Z
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: &2152199580 !ruby/object:Gem::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: *2152199580
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: &2152197980 !ruby/object:Gem::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: *2152197980
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: &2152196700 !ruby/object:Gem::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: *2152196700
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: &2152195320 !ruby/object:Gem::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: *2152195320
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: &2152191720 !ruby/object:Gem::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: *2152191720
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: &2152188520 !ruby/object:Gem::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: *2152188520
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: &2152182860 !ruby/object:Gem::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: *2152182860
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: &2152179920 !ruby/object:Gem::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: *2152179920
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: &2152173700 !ruby/object:Gem::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: *2152173700
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: &2152171280 !ruby/object:Gem::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: *2152171280
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: &2152167280 !ruby/object:Gem::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: *2152167280
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: &2152145560 !ruby/object:Gem::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: *2152145560
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: &2152141620 !ruby/object:Gem::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: *2152141620
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: -2688900020058151764
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: -2688900020058151764
511
+ hash: -2629785281422832728
447
512
  requirements: []
448
513
  rubyforge_project:
449
- rubygems_version: 1.8.15
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: