protobuf 3.3.6 → 3.4.0

Sign up to get free protection for your applications and to get access to all the features.
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
-