Actions
Refactor #5713
closedRemove method definitions from included block when using Concern
Description
Hi fellow Rubyists,
I saw methods defined directly in included block when using Concern several times.
module AModule extend ActiveSupport::Concern included do # this is BAD def a_method end end end
It is a bad practice and it breaks things, all instance methods should go to the AModule, and all class methods to a ClassMethods module.
- It dynamically creates methods in each class, they are not shared through module, it is slow.
- It cannot be accessed for extension, there is no module to include to.
- it breaks `super` calls.
We should avoid using this and go for:
module AModule extend ActiveSupport::Concern included do # e.g. has_one :user end module ClassMethods def a_method end end end
Thanks.
I'll create issue to remove these bad definitions.
Petr
Updated by Petr Chalupa over 10 years ago
- Copied to Refactor #5714: Remove method definitions from included block when using Concern added
Updated by Eric Helms over 10 years ago
- Target version set to 48
- Triaged changed from No to Yes
Updated by Eric Helms over 10 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
Applied in changeset katello|commit:da7584bd9c6a14d3c641cb8777a58b4a8211cd26.
Updated by David Davis over 10 years ago
- Related to Bug #6317: rake katello:reindex fails with NoMethodError: undefined method `delete_index' for Katello::PuppetModule:Class added
Updated by Eric Helms over 10 years ago
- Translation missing: en.field_release set to 13
Actions