From d7963003aab5be905defa8f584d24cb5de1da089 Mon Sep 17 00:00:00 2001 From: Suha Can Date: Wed, 3 Nov 2010 14:17:27 -0700 Subject: [PATCH] - PERF Fix for codeplex bug 16713: don't use dynamic keywork to invoke DLR object methods --HG-- branch : perf --- .../Orchard.Widgets/RuleEngine/RuleManager.cs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/RuleManager.cs b/src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/RuleManager.cs index 47ddb6c91..6c960b494 100644 --- a/src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/RuleManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/RuleManager.cs @@ -14,23 +14,21 @@ namespace Orchard.Widgets.RuleEngine { } public bool Matches(string expression) { - _scriptingManager.SetVariable("callbacks", new CallbackApi(this)); dynamic execContext = _scriptingManager.ExecuteExpression(@" class ExecContext - def initialize(callbacks) + def execute(callbacks, text) @callbacks = callbacks; - end - - def execute(text) - instance_eval(text.to_s); + temp = instance_eval(text.to_s); + @callbacks = 0; + return temp; end def method_missing(name, *args, &block) @callbacks.send(name, args, &block); end end - ExecContext.new(callbacks)"); - return execContext.execute(expression); + ExecContext.new()"); + return execContext.execute(new CallbackApi(this), expression); } public class CallbackApi {