Re: Updating a project and NIL class variables
Posted by
kilon.alios on
Jan 20, 2016; 2:15pm
URL: https://forum.world.st/Updating-a-project-and-NIL-class-variables-tp4872905p4872924.html
ok thank you all , its now crystal clear that I need to follow Sven's approach, or maybe do it manually creating a reset method.
On Wed, Jan 20, 2016 at 4:31 PM Dimitris Chloupis <
[hidden email]> wrote:
Thank you for the info but I think I did not make myself clear because you say "remain nil"
Ok Imagine a class SomeClass and that class has a variable we will call SomeVariable, class variable that is
, there is no class initialize method, now that class has a method that is eventually called ,
someMethod
SomeVariable ifNil: [ SomeVariable := 'hello world']
so when I decide to update this class via metacello loading the latest version from github , SomeVariable will have the value 'hello world'
My question is , will SomeVariable after I do the update revert back to nil or stay 'hello world' ?
If your answer is no, and it stays 'hello world' then yes i need an initialize method and call it at update time.
On Wed, Jan 20, 2016 at 2:54 PM Sven Van Caekenberghe <
[hidden email]> wrote:
They remain nil.
That is why #initialize on the class side is needed.
You can call that explicitly in a post load script, or rely on the class loading mechanism that normally calls #initialize automatically when loading a class. The warning is: this only happens when the *source* code of the #initialize methods changes. So sometimes, you will have to touch that method to force it.
I hope that makes sense.
See MCMethodDefinition>>#postloadOver:
> On 20 Jan 2016, at 13:41, Dimitris Chloupis <[hidden email]> wrote:
>
> So my question is this , I have a class with nil variables that are lazy initialised only when needed the first time and of course they keep their values from there on.
>
> Lets say I get the latest update from github via metacello over an older update that I already have inside the image , do those variables revert back to nil values ? or do they keep their values as they are ?