[Glass] Grrrr cannot migrate (class rename with subclasses and with a name of a deleted class)

Dale Henrichs via Glass glass at lists.gemtalksystems.com
Fri Aug 28 11:22:32 PDT 2015



On 8/26/15 11:44 PM, Otto Behrens via Glass wrote:
> This may help you when using changeNameTo:, so, this is what we do
> every time after loading code with Metacello:
>
> | gofer |
> gofer := Gofer it.
> gofer disablePackageCache.
> gofer repository: self localWonkaCodeRepository.
> allPackageNames doWithIndex: [ :packageName :index |
>    (MCWorkingCopy registry values anySatisfy: [ :workingCopy |
> workingCopy package name asSymbol == packageName asSymbol ])
>      ifTrue: [ gofer package: packageName ] ].
> gofer load
>
> Where allPackageNames is:
> ((MetacelloMCVersionSpecLoader on: <config class> latestVersion spec)
> required: {aGroupName};
> resolvePackageNames;
> packages) values
>
>
Well obviously, this should not be necessary - and I understand that 
when you are in the heat of development you have no time to characterize 
problems:)

I use Metacello all of the time in GemStone (not Pharo) and I don't find 
it necessary reload all of the packages ... but that does not mean you 
don't have good reasons for doing this:)

I _will_ ask on of my standard questions - are you using the latest 
version of Metacello and glassdb from GitHub?

Now that we've got this out of the way, I do know that there are certain 
sets of refactorings via Monticello loads that can cause problems for 
GLASS/GsDevKit  (moving instance variables up the hierarchy is the main 
example) ... turning autoMigration can reduce some of the problems 
(GsDeployer class>>bulkMigrate: turns off automigration) - with 
autoMigration turned off, subclass recompilation is suspended, but I 
guess there could be traps there as well ... I need to have a better set 
of test cases and I need to be aware of these problems and I need to 
find the time to address them:)

I am surprised that you have problems "everytime you load using 
Metacello" - if you are doing this in self defense then I understand, 
but if you are truly seeing issues every time, I would like to fix that 
pretty quickly ...

The standard Monticello package loader used by GemStone is pretty old 
and pretty simplistic and I suppose we could invent a better loader, but 
I would need some good examples of the refactorings that cause problems 
so we can set out with a set of the hard problems in our test suite ...

Dale




More information about the Glass mailing list