From 8942035f428c1d89219aa7569869b53a42d9a610 Mon Sep 17 00:00:00 2001 From: Andrew White Date: Thu, 6 Dec 2012 12:42:47 +0000 Subject: Add comment about implementation of class_attribute To prevent future pull requests like #8435 add a comment about the implementation of class_attribute using class_eval for performance. [ci skip] --- activesupport/lib/active_support/core_ext/class/attribute.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/activesupport/lib/active_support/core_ext/class/attribute.rb b/activesupport/lib/active_support/core_ext/class/attribute.rb index 1c3d26ead4..1504e18839 100644 --- a/activesupport/lib/active_support/core_ext/class/attribute.rb +++ b/activesupport/lib/active_support/core_ext/class/attribute.rb @@ -72,6 +72,9 @@ class Class instance_reader = options.fetch(:instance_accessor, true) && options.fetch(:instance_reader, true) instance_writer = options.fetch(:instance_accessor, true) && options.fetch(:instance_writer, true) + # We use class_eval here rather than define_method because class_attribute + # may be used in a performance sensitive context therefore the overhead that + # define_method introduces may become significant. attrs.each do |name| class_eval <<-RUBY, __FILE__, __LINE__ + 1 def self.#{name}() nil end -- cgit v1.2.3