Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Foo
- def create_methods(*args)
- args.each do |fieldname|
- fieldname = fieldname.to_s
- define_method fieldname + '_field' do
- @fields ||= {}
- begin
- raise 'foo'
- rescue
- puts "#{fieldname}_field (#{$!.backtrace[0]})"
- end
- @fields[fieldname]
- end
- define_method fieldname + '_field=' do |value|
- puts "#{fieldname}_field = #{value.inspect}"
- @fields ||= {}
- @fields[fieldname] = value
- end
- define_method 'writeback' do
- @fields.keys.each do |fieldname|
- puts "#{fieldname} = #{@fields[fieldname].inspect}"
- end
- end
- end
- end
- end
- class BaseClass
- end
- BaseClass.class_eval do
- extend Foo
- end
- class FooClass < BaseClass
- create_methods :bar, :baz
- end
- b = FooClass.new
- b.bar_field
- b.baz_field
- b.bar_field = 'barr'
- b.baz_field = 'bazz'
- b.writeback
- b.bar_field
- # The error manifests itself here: variable fieldname has the value 'bar'
- # where it should be 'baz'
- b.baz_field
Add Comment
Please, Sign In to add comment