aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2013-05-14 14:02:33 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2013-05-14 14:03:14 -0700
commitdbee8c32588083f54857e01b20479229b2f49498 (patch)
tree25697f7e0953938b313b9dbe0d214b78c15177c5 /activesupport/lib/active_support
parentc7182563e59c7d32105211f3dfb0bcb6db74ab85 (diff)
downloadrails-dbee8c32588083f54857e01b20479229b2f49498.tar.gz
rails-dbee8c32588083f54857e01b20479229b2f49498.tar.bz2
rails-dbee8c32588083f54857e01b20479229b2f49498.zip
fixing arity2 test
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r--activesupport/lib/active_support/callbacks.rb11
1 files changed, 8 insertions, 3 deletions
diff --git a/activesupport/lib/active_support/callbacks.rb b/activesupport/lib/active_support/callbacks.rb
index ab3bb23e88..d2a545b6d4 100644
--- a/activesupport/lib/active_support/callbacks.rb
+++ b/activesupport/lib/active_support/callbacks.rb
@@ -109,10 +109,10 @@ module ActiveSupport
class Before
def self.build(next_callback, user_callback, user_conditions, chain_config, filter)
if chain_config.key?(:terminator) && user_conditions.any?
- halted_lambda = eval "lambda { |result| #{chain_config[:terminator]} }"
+ halted_lambda = class_eval "lambda { |result| #{chain_config[:terminator]} }", __FILE__, __LINE__
halting_and_conditional(next_callback, user_callback, user_conditions, halted_lambda, filter)
elsif chain_config.key? :terminator
- halted_lambda = eval "lambda { |result| #{chain_config[:terminator]} }"
+ halted_lambda = class_eval "lambda { |result| #{chain_config[:terminator]} }", __FILE__, __LINE__
halting(next_callback, user_callback, halted_lambda, filter)
elsif user_conditions.any?
conditional(next_callback, user_callback, user_conditions)
@@ -431,7 +431,12 @@ module ActiveSupport
l = eval "lambda { |value| #{filter} }"
lambda { |target, value| target.instance_exec(value, &l) }
when ::Proc
- raise ArgumentError if filter.arity > 1
+ if filter.arity > 1
+ return lambda { |target, _, &block|
+ raise ArgumentError unless block
+ target.instance_exec(target, block, &filter)
+ }
+ end
if filter.arity <= 0
lambda { |target, _| target.instance_exec(&filter) }