Here’s a snippet to play with:

p := Processor activeProcess.
x := 2.
v := TestDynamicVariable value: x during: [      
        ((p instVarNamed: 'env') ifNotNil: [ :env|
                env copyWithout: nil ]) inspect 
        ].

((p instVarNamed: 'env') ifNotNil: [ :env|
        env copyWithout: nil ]) inspect 

Cheers,
Max

> On 04 Dec 2015, at 10:47, Max Leske <maxle...@gmail.com> wrote:
> 
> I feel you :)
> 
> Without having thought this through completely: if you look at the 
> implementation of DynamicVariable>>value:during: you’ll see that the way it 
> works is that the variable is bound to the active process. In the debugger 
> you have access to the process that is being debugged and thus you should 
> have access to the variables bound to it. You could try accessing all such 
> variables by iterating over them (which I think will require an extension on 
> Process because you’d need to access at least the PSKeys class variable).
> 
> Cheers,
> Max
> 
>> On 04 Dec 2015, at 00:34, Mariano Martinez Peck <marianop...@gmail.com 
>> <mailto:marianop...@gmail.com>> wrote:
>> 
>> Hi guys,
>> 
>> This thing I will ask in this email it's in my mind since YEARS. But I have 
>> always thought it was like that and that there was nothing we could do. 
>> However, I think it's time I ask again :)
>> 
>> For those that have used Seaside, and you try to debug, you know that upon 
>> request processing seaside uses Exceptions mechanisim to always have access 
>> to the request, session, etc. They way that is done is very smart :)
>> 
>>  WACurrentRequestContext use: self during: aBlock
>> 
>> In that case, "self" is the request instance and aBlock the closure that 
>> takes care of the request processing. So, inside that closure, everywhere 
>> you do "WACurrentRequestContext value" you get the correct request instance.
>> 
>> So..that's great for Seaside, but debugging gets complicated. While you can 
>> restart, proceed, etc, once inside debugger, you  cannot evaluate any piece 
>> of code that will use the session  or request because you get a 
>> WARequestContextNotFound. Of course, because I guess the evaluation you do 
>> from cmd+d on a piece of text or via the debugger inspector, creates another 
>> closure/context which does not receive the WACurrentRequestContext instance. 
>> 
>> Now....besides WACurrentRequestContext I have my own class 
>> UserContextInformation where I basically have a bunch of stuff associated to 
>> the logged user. And I do exactly the same as the WACurrentRequestContext. 
>> And I have the same problem. I really want to be able to fix this.
>> 
>> Anyone have an idea on how can I do it? I guess I can change the debugger, 
>> in the place where I evaluate code so that I wrap that evaluation with my 
>> request context instance???
>> 
>> Thoughts?
>> 
>> 
>> -- 
>> Mariano
>> http://marianopeck.wordpress.com <http://marianopeck.wordpress.com/>
> 

Reply via email to