diff options
author | Piotr Sarnacki <drogus@gmail.com> | 2012-01-15 12:06:50 +0100 |
---|---|---|
committer | Piotr Sarnacki <drogus@gmail.com> | 2012-01-15 16:01:05 +0100 |
commit | dee595ce04b65d27294912faff146ed402ded6d1 (patch) | |
tree | 4808974cd8dcc5c19d13e4618116a6cbad32fc53 /activemodel/test/cases/attribute_methods_test.rb | |
parent | 95027d224050a3715677a09593d5891bd71a732e (diff) | |
download | rails-dee595ce04b65d27294912faff146ed402ded6d1.tar.gz rails-dee595ce04b65d27294912faff146ed402ded6d1.tar.bz2 rails-dee595ce04b65d27294912faff146ed402ded6d1.zip |
Fix stack level too deep when model does not have attributes method.
Without that patch when using ActiveModel::AttributeMethods
in a class that does not respond to `attributes` method,
stack level too deep error will be raised on non existing
method. While documentation is clear that you need to define
`attributes` method in order to use AttributeMethods module,
`stack level too deep` is rather obscure and hard to debug,
therefore we should try to not break `method_missing` if
someone forgets about defining `attributes`.
Diffstat (limited to 'activemodel/test/cases/attribute_methods_test.rb')
-rw-r--r-- | activemodel/test/cases/attribute_methods_test.rb | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/activemodel/test/cases/attribute_methods_test.rb b/activemodel/test/cases/attribute_methods_test.rb index 90f9b78334..ff60100c08 100644 --- a/activemodel/test/cases/attribute_methods_test.rb +++ b/activemodel/test/cases/attribute_methods_test.rb @@ -76,7 +76,15 @@ private end end +class ModelWithouAttributesMethod + include ActiveModel::AttributeMethods +end + class AttributeMethodsTest < ActiveModel::TestCase + test 'method missing works correctly even if attributes method is not defined' do + assert_raises(NoMethodError) { ModelWithouAttributesMethod.new.foo } + end + test 'unrelated classes should not share attribute method matchers' do assert_not_equal ModelWithAttributes.send(:attribute_method_matchers), ModelWithAttributes2.send(:attribute_method_matchers) |