diff options
Diffstat (limited to 'activesupport/CHANGELOG.md')
-rw-r--r-- | activesupport/CHANGELOG.md | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index 1a169d36be..7f4014cac1 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -1,3 +1,50 @@ +* Introduce Module#delegate_missing_to + + When building a decorator, a common pattern emerges: + + class Partition + def initialize(first_event) + @events = [ first_event ] + end + + def people + if @events.first.detail.people.any? + @events.collect { |e| Array(e.detail.people) }.flatten.uniq + else + @events.collect(&:creator).uniq + end + end + + private + def respond_to_missing?(name, include_private = false) + @events.respond_to?(name, include_private) + end + + def method_missing(method, *args, &block) + @events.send(method, *args, &block) + end + end + + With `Module#delegate_missing_to`, the above is condensed to: + + class Partition + delegate_missing_to :@events + + def initialize(first_event) + @events = [ first_event ] + end + + def people + if @events.first.detail.people.any? + @events.collect { |e| Array(e.detail.people) }.flatten.uniq + else + @events.collect(&:creator).uniq + end + end + end + + *Genadi Samokovarov*, *DHH* + ## Rails 5.0.0.beta3 (February 24, 2016) ## * Deprecate arguments on `assert_nothing_raised`. |