aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib
diff options
context:
space:
mode:
authorSergey Nartimov <just.lest@gmail.com>2012-03-22 22:25:55 +0300
committerSergey Nartimov <just.lest@gmail.com>2012-03-22 22:25:55 +0300
commit9c857db75788c21f6184279c130e79f21c750f9f (patch)
tree510a99740da381a64db66fe1601b7ebf263c837a /activesupport/lib
parent64249223ebb2b51814d8764c498b14a12d072b83 (diff)
downloadrails-9c857db75788c21f6184279c130e79f21c750f9f.tar.gz
rails-9c857db75788c21f6184279c130e79f21c750f9f.tar.bz2
rails-9c857db75788c21f6184279c130e79f21c750f9f.zip
deprecate Proc#bind that can cause symbol memory leak
Diffstat (limited to 'activesupport/lib')
-rw-r--r--activesupport/lib/active_support/core_ext/proc.rb3
-rw-r--r--activesupport/lib/active_support/rescuable.rb2
2 files changed, 4 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/core_ext/proc.rb b/activesupport/lib/active_support/core_ext/proc.rb
index 94bb5fb0cb..cd63740940 100644
--- a/activesupport/lib/active_support/core_ext/proc.rb
+++ b/activesupport/lib/active_support/core_ext/proc.rb
@@ -1,7 +1,10 @@
require "active_support/core_ext/kernel/singleton_class"
+require "active_support/deprecation"
class Proc #:nodoc:
def bind(object)
+ ActiveSupport::Deprecation.warn 'Proc#bind is deprecated and will be removed in future versions', caller
+
block, time = self, Time.now
object.class_eval do
method_name = "__bind_#{time.to_i}_#{time.usec}"
diff --git a/activesupport/lib/active_support/rescuable.rb b/activesupport/lib/active_support/rescuable.rb
index 0f4a06468a..7ed426a90d 100644
--- a/activesupport/lib/active_support/rescuable.rb
+++ b/activesupport/lib/active_support/rescuable.rb
@@ -108,7 +108,7 @@ module ActiveSupport
when Symbol
method(rescuer)
when Proc
- rescuer.bind(self)
+ Proc.new { |*args| instance_exec(*args, &rescuer) }
end
end
end