protobuf 3.3.6 → 3.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.
Files changed (141) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +48 -0
  3. data/.rubocop_todo.yml +79 -0
  4. data/.travis.yml +12 -4
  5. data/Rakefile +14 -11
  6. data/bin/protoc-gen-ruby +0 -1
  7. data/bin/rpc_server +1 -0
  8. data/install-protobuf.sh +8 -0
  9. data/lib/protobuf.rb +30 -24
  10. data/lib/protobuf/cli.rb +35 -35
  11. data/lib/protobuf/code_generator.rb +11 -8
  12. data/lib/protobuf/decoder.rb +4 -5
  13. data/lib/protobuf/deprecation.rb +20 -0
  14. data/lib/protobuf/descriptors/google/protobuf/compiler/plugin.pb.rb +2 -0
  15. data/lib/protobuf/descriptors/google/protobuf/descriptor.pb.rb +2 -0
  16. data/lib/protobuf/encoder.rb +9 -4
  17. data/lib/protobuf/enum.rb +38 -54
  18. data/lib/protobuf/field.rb +2 -2
  19. data/lib/protobuf/field/base_field.rb +28 -32
  20. data/lib/protobuf/field/bool_field.rb +4 -4
  21. data/lib/protobuf/field/bytes_field.rb +5 -4
  22. data/lib/protobuf/field/double_field.rb +0 -1
  23. data/lib/protobuf/field/enum_field.rb +4 -7
  24. data/lib/protobuf/field/field_array.rb +3 -4
  25. data/lib/protobuf/field/fixed32_field.rb +1 -1
  26. data/lib/protobuf/field/fixed64_field.rb +0 -1
  27. data/lib/protobuf/field/float_field.rb +0 -1
  28. data/lib/protobuf/field/int32_field.rb +0 -1
  29. data/lib/protobuf/field/int64_field.rb +0 -1
  30. data/lib/protobuf/field/integer_field.rb +0 -1
  31. data/lib/protobuf/field/message_field.rb +2 -3
  32. data/lib/protobuf/field/sfixed32_field.rb +0 -1
  33. data/lib/protobuf/field/sfixed64_field.rb +0 -1
  34. data/lib/protobuf/field/signed_integer_field.rb +0 -1
  35. data/lib/protobuf/field/sint32_field.rb +0 -1
  36. data/lib/protobuf/field/sint64_field.rb +0 -1
  37. data/lib/protobuf/field/string_field.rb +0 -1
  38. data/lib/protobuf/field/uint32_field.rb +0 -1
  39. data/lib/protobuf/field/uint64_field.rb +0 -1
  40. data/lib/protobuf/field/varint_field.rb +0 -1
  41. data/lib/protobuf/generators/base.rb +1 -2
  42. data/lib/protobuf/generators/enum_generator.rb +1 -2
  43. data/lib/protobuf/generators/extension_generator.rb +1 -2
  44. data/lib/protobuf/generators/field_generator.rb +4 -5
  45. data/lib/protobuf/generators/file_generator.rb +22 -27
  46. data/lib/protobuf/generators/group_generator.rb +15 -16
  47. data/lib/protobuf/generators/message_generator.rb +13 -14
  48. data/lib/protobuf/generators/printable.rb +9 -10
  49. data/lib/protobuf/generators/service_generator.rb +1 -2
  50. data/lib/protobuf/lifecycle.rb +20 -33
  51. data/lib/protobuf/logging.rb +4 -6
  52. data/lib/protobuf/message.rb +22 -16
  53. data/lib/protobuf/message/fields.rb +14 -17
  54. data/lib/protobuf/message/serialization.rb +6 -5
  55. data/lib/protobuf/rpc/buffer.rb +10 -12
  56. data/lib/protobuf/rpc/client.rb +12 -12
  57. data/lib/protobuf/rpc/connectors/base.rb +4 -3
  58. data/lib/protobuf/rpc/connectors/common.rb +15 -17
  59. data/lib/protobuf/rpc/connectors/socket.rb +2 -2
  60. data/lib/protobuf/rpc/connectors/zmq.rb +118 -108
  61. data/lib/protobuf/rpc/dynamic_discovery.pb.rb +2 -0
  62. data/lib/protobuf/rpc/env.rb +12 -12
  63. data/lib/protobuf/rpc/error.rb +1 -1
  64. data/lib/protobuf/rpc/error/client_error.rb +4 -4
  65. data/lib/protobuf/rpc/error/server_error.rb +6 -6
  66. data/lib/protobuf/rpc/middleware/exception_handler.rb +1 -1
  67. data/lib/protobuf/rpc/middleware/logger.rb +3 -3
  68. data/lib/protobuf/rpc/middleware/request_decoder.rb +5 -5
  69. data/lib/protobuf/rpc/middleware/response_encoder.rb +3 -3
  70. data/lib/protobuf/rpc/rpc.pb.rb +2 -0
  71. data/lib/protobuf/rpc/servers/socket/server.rb +75 -65
  72. data/lib/protobuf/rpc/servers/socket/worker.rb +2 -2
  73. data/lib/protobuf/rpc/servers/socket_runner.rb +12 -6
  74. data/lib/protobuf/rpc/servers/zmq/broker.rb +10 -6
  75. data/lib/protobuf/rpc/servers/zmq/server.rb +20 -26
  76. data/lib/protobuf/rpc/servers/zmq/util.rb +7 -7
  77. data/lib/protobuf/rpc/servers/zmq/worker.rb +5 -7
  78. data/lib/protobuf/rpc/servers/zmq_runner.rb +14 -3
  79. data/lib/protobuf/rpc/service.rb +15 -15
  80. data/lib/protobuf/rpc/service_directory.rb +7 -11
  81. data/lib/protobuf/rpc/service_dispatcher.rb +3 -3
  82. data/lib/protobuf/rpc/service_filters.rb +27 -28
  83. data/lib/protobuf/rpc/stat.rb +4 -7
  84. data/lib/protobuf/socket.rb +0 -1
  85. data/lib/protobuf/tasks/compile.rake +2 -2
  86. data/lib/protobuf/version.rb +1 -1
  87. data/protobuf.gemspec +20 -4
  88. data/spec/benchmark/tasks.rb +49 -23
  89. data/spec/bin/protoc-gen-ruby_spec.rb +11 -6
  90. data/spec/encoding/all_types_spec.rb +91 -77
  91. data/spec/encoding/extreme_values_spec.rb +0 -0
  92. data/spec/functional/socket_server_spec.rb +9 -10
  93. data/spec/functional/zmq_server_spec.rb +21 -19
  94. data/spec/lib/protobuf/cli_spec.rb +20 -20
  95. data/spec/lib/protobuf/code_generator_spec.rb +6 -6
  96. data/spec/lib/protobuf/enum_spec.rb +57 -31
  97. data/spec/lib/protobuf/field/float_field_spec.rb +2 -2
  98. data/spec/lib/protobuf/field/int32_field_spec.rb +1 -1
  99. data/spec/lib/protobuf/field/string_field_spec.rb +7 -8
  100. data/spec/lib/protobuf/field_spec.rb +3 -6
  101. data/spec/lib/protobuf/generators/base_spec.rb +6 -6
  102. data/spec/lib/protobuf/generators/enum_generator_spec.rb +22 -17
  103. data/spec/lib/protobuf/generators/extension_generator_spec.rb +8 -9
  104. data/spec/lib/protobuf/generators/field_generator_spec.rb +14 -11
  105. data/spec/lib/protobuf/generators/file_generator_spec.rb +7 -4
  106. data/spec/lib/protobuf/generators/service_generator_spec.rb +14 -11
  107. data/spec/lib/protobuf/lifecycle_spec.rb +9 -4
  108. data/spec/lib/protobuf/message_spec.rb +63 -35
  109. data/spec/lib/protobuf/optionable_spec.rb +3 -3
  110. data/spec/lib/protobuf/rpc/client_spec.rb +2 -2
  111. data/spec/lib/protobuf/rpc/connector_spec.rb +1 -1
  112. data/spec/lib/protobuf/rpc/connectors/base_spec.rb +6 -6
  113. data/spec/lib/protobuf/rpc/connectors/common_spec.rb +26 -18
  114. data/spec/lib/protobuf/rpc/connectors/socket_spec.rb +4 -4
  115. data/spec/lib/protobuf/rpc/connectors/zmq_spec.rb +11 -9
  116. data/spec/lib/protobuf/rpc/middleware/exception_handler_spec.rb +2 -2
  117. data/spec/lib/protobuf/rpc/middleware/logger_spec.rb +7 -7
  118. data/spec/lib/protobuf/rpc/middleware/request_decoder_spec.rb +14 -14
  119. data/spec/lib/protobuf/rpc/middleware/response_encoder_spec.rb +5 -5
  120. data/spec/lib/protobuf/rpc/servers/socket_server_spec.rb +1 -1
  121. data/spec/lib/protobuf/rpc/servers/zmq/server_spec.rb +9 -7
  122. data/spec/lib/protobuf/rpc/servers/zmq/util_spec.rb +9 -9
  123. data/spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb +2 -2
  124. data/spec/lib/protobuf/rpc/service_directory_spec.rb +24 -23
  125. data/spec/lib/protobuf/rpc/service_dispatcher_spec.rb +4 -4
  126. data/spec/lib/protobuf/rpc/service_filters_spec.rb +84 -51
  127. data/spec/lib/protobuf/rpc/service_spec.rb +15 -14
  128. data/spec/lib/protobuf/rpc/stat_spec.rb +1 -1
  129. data/spec/lib/protobuf_spec.rb +9 -9
  130. data/spec/spec_helper.rb +7 -19
  131. data/spec/support/server.rb +29 -59
  132. data/spec/support/test/defaults.pb.rb +2 -0
  133. data/spec/support/test/enum.pb.rb +2 -0
  134. data/spec/support/test/extended.pb.rb +2 -0
  135. data/spec/support/test/google_unittest_import.pb.rb +2 -0
  136. data/spec/support/test/google_unittest_import_public.pb.rb +2 -0
  137. data/spec/support/test/multi_field_extensions.pb.rb +2 -0
  138. data/spec/support/test/resource.pb.rb +2 -0
  139. data/spec/support/test/resource_service.rb +17 -20
  140. metadata +153 -112
  141. data/lib/protobuf/deprecator.rb +0 -42
@@ -23,7 +23,7 @@ module Protobuf
23
23
 
24
24
  def compile_declaration
25
25
  run_once(:compile_declaration) do
26
- if is_printable?
26
+ if printable?
27
27
  print_class(descriptor.name, :message) do
28
28
  group = GroupGenerator.new(current_indent)
29
29
  group.add_enums(descriptor.enum_type, :namespace => type_namespace)
@@ -38,7 +38,7 @@ module Protobuf
38
38
 
39
39
  def compile_message
40
40
  run_once(:compile_message) do
41
- if is_printable?
41
+ if printable?
42
42
  print_class(descriptor.name, nil) do
43
43
  group = GroupGenerator.new(current_indent)
44
44
  group.add_messages(descriptor.nested_type, :extension_fields => @extension_fields, :namespace => type_namespace)
@@ -52,7 +52,7 @@ module Protobuf
52
52
 
53
53
  group.add_extension_fields(message_extension_fields)
54
54
 
55
- group.order = [ :message, :field, :extension_range, :extension_field ]
55
+ group.order = [:message, :field, :extension_range, :extension_field]
56
56
  print group.to_s
57
57
  end
58
58
  end
@@ -61,31 +61,31 @@ module Protobuf
61
61
 
62
62
  private
63
63
 
64
- def has_extensions?
65
- ! message_extension_fields.empty?
64
+ def extensions?
65
+ !message_extension_fields.empty?
66
66
  end
67
67
 
68
- def has_fields?
68
+ def fields?
69
69
  descriptor.field.count > 0
70
70
  end
71
71
 
72
- def has_nested_enums?
72
+ def nested_enums?
73
73
  descriptor.enum_type.count > 0
74
74
  end
75
75
 
76
- def has_nested_messages?
76
+ def nested_messages?
77
77
  descriptor.nested_type.count > 0
78
78
  end
79
79
 
80
- def has_nested_types?
81
- has_nested_enums? || has_nested_messages?
80
+ def nested_types?
81
+ nested_enums? || nested_messages?
82
82
  end
83
83
 
84
- def is_printable?
84
+ def printable?
85
85
  if @only_declarations
86
- has_nested_types?
86
+ nested_types?
87
87
  else
88
- has_fields? || has_nested_messages? || has_extensions?
88
+ fields? || nested_messages? || extensions?
89
89
  end
90
90
  end
91
91
 
@@ -96,4 +96,3 @@ module Protobuf
96
96
  end
97
97
  end
98
98
  end
99
-
@@ -11,9 +11,13 @@ module Protobuf
11
11
  #
12
12
  def init_printer(indent_level)
13
13
  @io = ::StringIO.new
14
- @_indent_level = indent_level.to_i || 0
14
+ self.current_indent = indent_level.to_i
15
15
  end
16
16
 
17
+ protected
18
+
19
+ attr_accessor :current_indent
20
+
17
21
  private
18
22
 
19
23
  # Print a one-line comment.
@@ -22,10 +26,6 @@ module Protobuf
22
26
  puts "# #{message}"
23
27
  end
24
28
 
25
- def current_indent
26
- @_indent_level
27
- end
28
-
29
29
  # Print a "header" comment.
30
30
  #
31
31
  # header("Lorem ipsum dolor")
@@ -43,7 +43,7 @@ module Protobuf
43
43
  # (after the block is finished).
44
44
  #
45
45
  def indent
46
- @_indent_level += 1
46
+ self.current_indent += 1
47
47
  yield
48
48
  outdent
49
49
  end
@@ -68,7 +68,7 @@ module Protobuf
68
68
  # Decrease the indent level. Cannot be negative.
69
69
  #
70
70
  def outdent
71
- @_indent_level -= 1 unless @_indent_level == 0
71
+ self.current_indent -= 1 unless current_indent.zero?
72
72
  end
73
73
 
74
74
  # Return the parent class for a given type.
@@ -84,7 +84,7 @@ module Protobuf
84
84
  when :service then
85
85
  PARENT_CLASS_SERVICE
86
86
  else
87
- raise "Unknown parent class type #{type}: #{caller[0..5].join("\n")}"
87
+ fail "Unknown parent class type #{type}: #{caller[0..5].join("\n")}"
88
88
  end
89
89
  end
90
90
 
@@ -136,7 +136,7 @@ module Protobuf
136
136
  #
137
137
  def puts(message = nil)
138
138
  if message
139
- @io.puts((" " * @_indent_level) + message)
139
+ @io.puts((" " * current_indent) + message)
140
140
  else
141
141
  @io.puts
142
142
  end
@@ -158,4 +158,3 @@ module Protobuf
158
158
  end
159
159
  end
160
160
  end
161
-
@@ -18,10 +18,9 @@ module Protobuf
18
18
  name = method_descriptor.name
19
19
  request_klass = modulize(method_descriptor.input_type)
20
20
  response_klass = modulize(method_descriptor.output_type)
21
- return "rpc :#{name.underscore}, #{request_klass}, #{response_klass}"
21
+ "rpc :#{name.underscore}, #{request_klass}, #{response_klass}"
22
22
  end
23
23
 
24
24
  end
25
25
  end
26
26
  end
27
-
@@ -1,46 +1,33 @@
1
1
  module Protobuf
2
2
  class Lifecycle
3
- include ::Protobuf::Logging
4
-
5
- def self.register(event_name, &blk)
6
- raise "Lifecycle register must have a block" unless block_given?
7
- event_name = normalized_event_name(event_name)
3
+ class << self
4
+ def register(event_name, &blk)
5
+ fail "Lifecycle register must have a block" unless block_given?
6
+ event_name = normalized_event_name(event_name)
8
7
 
9
- if ::Protobuf.print_deprecation_warnings?
10
- $stderr.puts <<-ERROR
11
- [DEPRECATED] ::Protobuf::Lifecycle has been deprecated and will be removed in a future version.
12
- Use ::ActiveSupport::Notifications.subscribe('#{event_name}')
13
- ERROR
8
+ ::ActiveSupport::Notifications.subscribe(event_name) do |_name, _start, _finish, _id, args|
9
+ blk.call(*args)
10
+ end
14
11
  end
12
+ alias_method :on, :register
15
13
 
16
- ::ActiveSupport::Notifications.subscribe(event_name) do |name, start, finish, id, args|
17
- blk.call(*args)
18
- end
19
- end
14
+ def trigger(event_name, *args)
15
+ event_name = normalized_event_name(event_name)
20
16
 
21
- def self.trigger( event_name, *args )
22
- if ::Protobuf.print_deprecation_warnings?
23
- $stderr.puts <<-ERROR
24
- [DEPRECATED] ::Protobuf::Lifecycle has been deprecated and will be removed in a future version.
25
- Use ::ActiveSupport::Notifications.instrument(...)
26
- ERROR
17
+ ::ActiveSupport::Notifications.instrument(event_name, args)
27
18
  end
28
19
 
29
- event_name = normalized_event_name( event_name )
20
+ replacement = ::ActiveSupport::Notifications
30
21
 
31
- ::ActiveSupport::Notifications.instrument(event_name, args)
32
- end
22
+ ::Protobuf.deprecator.deprecate_methods(
23
+ self,
24
+ :register => "#{replacement}.#{replacement.method(:subscribe).name}".to_sym,
25
+ :trigger => "#{replacement}.#{replacement.method(:instrument).name}".to_sym,
26
+ )
33
27
 
34
- def self.normalized_event_name(event_name)
35
- return "#{event_name}".downcase
36
- end
37
-
38
- class << self
39
- attr_accessor :lifecycle_events
40
-
41
- alias_method :on, :register
28
+ def normalized_event_name(event_name)
29
+ event_name.to_s.downcase
30
+ end
42
31
  end
43
-
44
- @lifecycle_events ||= {}
45
32
  end
46
33
  end
@@ -2,9 +2,7 @@ require 'logger'
2
2
 
3
3
  module Protobuf
4
4
  module Logging
5
- def self.initialize_logger(log_target=$stdout, log_level=::Logger::INFO)
6
- @counter ||= 0
7
- @counter = @counter + 1
5
+ def self.initialize_logger(log_target = $stdout, log_level = ::Logger::INFO)
8
6
  @logger = Logger.new(log_target)
9
7
  @logger.level = log_level
10
8
  @logger
@@ -14,8 +12,8 @@ module Protobuf
14
12
  defined?(@logger) ? @logger : initialize_logger
15
13
  end
16
14
 
17
- def self.logger=(new_logger)
18
- @logger = new_logger
15
+ class << self
16
+ attr_writer :logger
19
17
  end
20
18
 
21
19
  def logger
@@ -29,7 +27,7 @@ module Protobuf
29
27
  end
30
28
 
31
29
  def log_signature
32
- @_log_signature ||= "[#{self.class == Class ? self.name : self.class.name}]"
30
+ @_log_signature ||= "[#{self.class == Class ? name : self.class.name}]"
33
31
  end
34
32
 
35
33
  def sign_message(message)
@@ -74,23 +74,28 @@ module Protobuf
74
74
  value = @values[field.getter]
75
75
 
76
76
  if value.nil?
77
- raise ::Protobuf::SerializationError, "Required field #{self.class.name}##{field.name} does not have a value."
77
+ fail ::Protobuf::SerializationError, "Required field #{self.class.name}##{field.name} does not have a value."
78
78
  else
79
79
  yield(field, value)
80
80
  end
81
81
  end
82
82
  end
83
83
 
84
- def has_field?(name)
85
- @values.has_key?(name)
84
+ def field?(name)
85
+ @values.key?(name)
86
86
  end
87
+ ::Protobuf.deprecator.define_deprecated_methods(self, :has_field? => :field?)
87
88
 
88
89
  def inspect
89
- to_hash.inspect
90
+ attrs = self.class.fields.map do |field|
91
+ [field.name, send(field.name).inspect].join('=')
92
+ end.join(' ')
93
+
94
+ "#<#{self.class} #{attrs}>"
90
95
  end
91
96
 
92
97
  def respond_to_has?(key)
93
- respond_to?(key) && has_field?(key)
98
+ respond_to?(key) && field?(key)
94
99
  end
95
100
 
96
101
  def respond_to_has_and_present?(key)
@@ -100,7 +105,7 @@ module Protobuf
100
105
 
101
106
  # Return a hash-representation of the given fields for this message type.
102
107
  def to_hash
103
- result = Hash.new
108
+ result = {}
104
109
 
105
110
  @values.keys.each do |field_name|
106
111
  value = __send__(field_name)
@@ -108,7 +113,7 @@ module Protobuf
108
113
  result.merge!(field_name => hashed_value)
109
114
  end
110
115
 
111
- return result
116
+ result
112
117
  end
113
118
 
114
119
  def to_json(options = {})
@@ -119,26 +124,26 @@ module Protobuf
119
124
  self
120
125
  end
121
126
 
122
- def ==(obj)
123
- return false unless obj.is_a?(self.class)
127
+ def ==(other)
128
+ return false unless other.is_a?(self.class)
124
129
  each_field do |field, value|
125
- return false unless value == obj.__send__(field.name)
130
+ return false unless value == other.__send__(field.name)
126
131
  end
127
132
  true
128
133
  end
129
134
 
130
135
  def [](name)
131
- if field = self.class.get_field(name, true)
136
+ if (field = self.class.get_field(name, true))
132
137
  __send__(field.getter)
133
138
  end
134
139
  end
135
140
 
136
141
  def []=(name, value)
137
- if field = self.class.get_field(name, true)
142
+ if (field = self.class.get_field(name, true))
138
143
  __send__(field.setter, value) unless value.nil?
139
144
  else
140
145
  unless ::Protobuf.ignore_unknown_fields?
141
- raise ::Protobuf::FieldNotDefinedError, name
146
+ fail ::Protobuf::FieldNotDefinedError, name
142
147
  end
143
148
  end
144
149
  end
@@ -161,20 +166,21 @@ module Protobuf
161
166
  ##
162
167
  # Private Instance Methods
163
168
  #
169
+
164
170
  private
165
171
 
166
172
  def copy_to(object, method)
167
- duplicate = proc { |obj|
173
+ duplicate = proc do |obj|
168
174
  case obj
169
175
  when Message, String then obj.__send__(method)
170
176
  else obj
171
177
  end
172
- }
178
+ end
173
179
 
174
180
  object.__send__(:initialize)
175
181
  @values.each do |name, value|
176
182
  if value.is_a?(::Protobuf::Field::FieldArray)
177
- object.__send__(name).replace(value.map {|v| duplicate.call(v)})
183
+ object.__send__(name).replace(value.map { |v| duplicate.call(v) })
178
184
  else
179
185
  object.__send__("#{name}=", duplicate.call(value))
180
186
  end
@@ -1,15 +1,15 @@
1
- require 'protobuf/deprecator'
2
-
3
1
  module Protobuf
4
2
  class Message
5
3
  module Fields
6
4
 
7
5
  def self.extended(other)
8
- other.extend(::Protobuf::Deprecator)
9
- other.deprecate_class_method(:get_ext_field_by_name, :get_extension_field)
10
- other.deprecate_class_method(:get_ext_field_by_tag, :get_extension_field)
11
- other.deprecate_class_method(:get_field_by_name, :get_field)
12
- other.deprecate_class_method(:get_field_by_tag, :get_field)
6
+ ::Protobuf.deprecator.define_deprecated_methods(
7
+ other.singleton_class,
8
+ :get_ext_field_by_name => :get_extension_field,
9
+ :get_ext_field_by_tag => :get_extension_field,
10
+ :get_field_by_name => :get_field,
11
+ :get_field_by_tag => :get_field,
12
+ )
13
13
  end
14
14
 
15
15
  ##
@@ -45,7 +45,7 @@ module Protobuf
45
45
  #
46
46
 
47
47
  def all_fields
48
- @all_fields ||= field_store.values.uniq
48
+ @all_fields ||= field_store.values.uniq.sort_by(&:tag)
49
49
  end
50
50
 
51
51
  def extension_fields
@@ -82,7 +82,7 @@ module Protobuf
82
82
  name_or_tag = name_or_tag.to_sym if name_or_tag.respond_to?(:to_sym)
83
83
  field = field_store[name_or_tag]
84
84
 
85
- if field && (allow_extension || ! field.extension?)
85
+ if field && (allow_extension || !field.extension?)
86
86
  field
87
87
  else
88
88
  nil
@@ -97,26 +97,23 @@ module Protobuf
97
97
  field_store[field_name] = field
98
98
  field_store[tag] = field
99
99
 
100
- class_eval(<<-RAW_GETTER, __FILE__, __LINE__ + 1)
101
- define_method("#{field_name}!") do
102
- @values[:#{field_name}]
103
- end
104
- RAW_GETTER
100
+ define_method("#{field_name}!") do
101
+ @values[field_name]
102
+ end
105
103
  end
106
104
 
107
105
  def raise_if_tag_collision(tag, field_name)
108
106
  if get_field(tag, true)
109
- raise TagCollisionError, %!Field number #{tag} has already been used in "#{name}" by field "#{field_name}".!
107
+ fail TagCollisionError, %(Field number #{tag} has already been used in "#{name}" by field "#{field_name}".)
110
108
  end
111
109
  end
112
110
 
113
111
  def raise_if_name_collision(field_name)
114
112
  if get_field(field_name, true)
115
- raise DuplicateFieldNameError, %!Field name #{field_name} has already been used in "#{name}".!
113
+ fail DuplicateFieldNameError, %(Field name #{field_name} has already been used in "#{name}".)
116
114
  end
117
115
  end
118
116
 
119
117
  end
120
118
  end
121
119
  end
122
-
@@ -8,12 +8,12 @@ module Protobuf
8
8
 
9
9
  module ClassMethods
10
10
  def decode(bytes)
11
- self.new.decode(bytes)
11
+ new.decode(bytes)
12
12
  end
13
13
 
14
14
  # Create a new object with the given values and return the encoded bytes.
15
15
  def encode(fields = {})
16
- self.new(fields).encode
16
+ new(fields).encode
17
17
  end
18
18
  end
19
19
 
@@ -44,8 +44,10 @@ module Protobuf
44
44
  # Encode this message
45
45
  #
46
46
  def encode
47
- stream = ::StringIO.new.set_encoding(::Protobuf::Field::BytesField::BYTES_ENCODING)
48
- encode_to(stream).string
47
+ stream = ::StringIO.new
48
+ stream.set_encoding(::Protobuf::Field::BytesField::BYTES_ENCODING)
49
+ encode_to(stream)
50
+ stream.string
49
51
  end
50
52
 
51
53
  # Encode this message to the given stream.
@@ -81,4 +83,3 @@ module Protobuf
81
83
  end
82
84
  end
83
85
  end
84
-