Skip to content

Commit 2db0708

Browse files
committed
Switch accessor creation from define_method to class_eval
1 parent 9086be3 commit 2db0708

2 files changed

Lines changed: 12 additions & 8 deletions

File tree

lib/protobuf/field/base_field.rb

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -177,16 +177,19 @@ def fully_qualified_name_only!
177177
#
178178

179179
def define_accessor(simple_field_name, fully_qualified_field_name)
180-
message_class.class_eval do
181-
define_method("#{simple_field_name}!") do
182-
@values[fully_qualified_field_name]
180+
message_class.class_eval <<-ruby, __FILE__, __LINE__
181+
def #{simple_field_name}!
182+
@values[:#{fully_qualified_field_name}]
183183
end
184-
end
185184
186-
message_class.class_eval do
187-
define_method(simple_field_name) { self[fully_qualified_field_name] }
188-
define_method("#{simple_field_name}=") { |v| self[fully_qualified_field_name] = v }
189-
end
185+
def #{simple_field_name}
186+
self[:#{fully_qualified_field_name}]
187+
end
188+
189+
def #{simple_field_name}=(value)
190+
self[:#{fully_qualified_field_name}] = value
191+
end
192+
ruby
190193

191194
return unless deprecated?
192195

protobuf.gemspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ require "protobuf/version"
3131
s.add_development_dependency 'simplecov'
3232
s.add_development_dependency 'timecop'
3333
s.add_development_dependency 'yard'
34+
s.add_development_dependency 'benchmark-ips'
3435

3536
# debuggers only work in MRI
3637
if RUBY_ENGINE.to_sym == :ruby

0 commit comments

Comments
 (0)