Skip to content

Commit 1edf373

Browse files
committed
Switch accessor creation from define_method to class_eval
1 parent 757068b commit 1edf373

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
@@ -172,16 +172,19 @@ def wire_type
172172
#
173173

174174
def define_accessor(simple_field_name, fully_qualified_field_name)
175-
message_class.class_eval do
176-
define_method("#{simple_field_name}!") do
177-
@values[fully_qualified_field_name]
175+
message_class.class_eval <<-ruby, __FILE__, __LINE__
176+
def #{simple_field_name}!
177+
@values[:#{fully_qualified_field_name}]
178178
end
179-
end
180179
181-
message_class.class_eval do
182-
define_method(simple_field_name) { self[fully_qualified_field_name] }
183-
define_method("#{simple_field_name}=") { |v| self[fully_qualified_field_name] = v }
184-
end
180+
def #{simple_field_name}
181+
self[:#{fully_qualified_field_name}]
182+
end
183+
184+
def #{simple_field_name}=(value)
185+
self[:#{fully_qualified_field_name}] = value
186+
end
187+
ruby
185188

186189
return unless deprecated?
187190

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)