Fix class_attribute so that it works with singleton classes.
This commit is contained in:
parent
f0364d87f0
commit
ab281f511c
@ -50,7 +50,7 @@ def class_attribute(*attrs)
|
||||
singleton_class.send(:define_method, attr) { value }
|
||||
end
|
||||
|
||||
define_method(attr) { self.class.send(attr) }
|
||||
define_method(attr) { self.singleton_class.send(attr) }
|
||||
define_method(:"#{attr}?") { !!send(attr) }
|
||||
define_method(:"#{attr}=") do |value|
|
||||
singleton_class.remove_possible_method(attr)
|
||||
|
@ -59,4 +59,10 @@ def setup
|
||||
object = Class.new { class_attribute :setting, :instance_writer => false }.new
|
||||
assert_raise(NoMethodError) { object.setting = 'boom' }
|
||||
end
|
||||
|
||||
test 'works well with singleton classes' do
|
||||
object = @klass.new
|
||||
object.singleton_class.setting = 'foo'
|
||||
assert_equal 'foo', object.setting
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user