Estimar a atualização do Magento é um processo de coleta de informações sobre as modificações aplicadas na instalação que você está prestes a fazer, verificando se essas modificações podem causar um problema e avaliando quanto tempo é necessário para contorná-las.
Todas as modificações podem ser literalmente divididas em fora do núcleo e dentro do núcleo .
Modificações fora do núcleo são aquelas que não serão substituídas pela atualização. Essas são extensões de terceiros , arquivos principais colocados no escopo local (app / code / local / Mage) e um tema personalizado .
As modificações no núcleo são aplicadas diretamente nos arquivos principais do Magento (app / code / core), arquivos de localização (app / locale / en_US), modelos principais e algumas coisas como javascripts , bibliotecas externas que raramente são personalizadas, mas precisam ser levadas em consideração .
Modificações fora do núcleo
Extensões de terceiros
Durante as atualizações, extensões de terceiros são a principal fonte de problemas. O que significa que, quanto mais extensões você tiver, mais tempo será necessário para analisá-las.
A primeira coisa a verificar é se a funcionalidade fornecida pela extensão ainda não foi implementada em uma versão do Magento para a qual você está atualizando. Por exemplo, algumas extensões como Yoast_CanonicalUrl
, Mxperts_CustomerAddress
ou Fontis_Wysiwyg
foram amplamente utilizado em Magento 1.3.xx e mais velhos, mas agora fazem parte do núcleo funcionalidade Magento e não é mais necessário.
É uma boa ideia verificar (pergunte ao seu cliente) se você realmente precisa de todas as extensões que possui. Pode haver algumas extensões instaladas, mas nunca realmente usadas. Portanto, neste ponto, é bom fazer uma espécie de limpeza.
Então, uma coisa importante a verificar é a compatibilidade de cada uma das extensões restantes com uma versão do Magento para a qual você está atualizando. Caso algumas extensões não sejam compatíveis e nenhuma extensão semelhante esteja disponível, você terá a opção difícil de perder alguma funcionalidade ou modificar as extensões existentes para torná-las compatíveis.
Nota: Não modifique a extensão de terceiros diretamente, mas crie uma nova extensão que estenda uma desatualizada e, em seguida, defina uma dependência no XML de inicialização da nova extensão.
Depois de tudo isso, é possível fornecer a análise real de cada uma das extensões restantes. Sempre deve começar com o exame do etc/config.xml
arquivo. Há três coisas a procurar:
- A reescrita de classe não é uma técnica limpa por si só, mas em alguns casos não há outra maneira de contornar. Portanto, se a classe reescrita foi alterada na nova versão do Magento, isso pode ser um problema em potencial.
- É menos provável que as atualizações de layout causem um problema com sua atualização, mas ainda assim, se a extensão estiver referenciando um bloco que foi descontinuado em uma versão mais recente do Magento, você precisará contornar isso.
- As atualizações SQL são uma fonte de problemas altamente subestimada durante as atualizações. O problema ocorre quando uma extensão de terceiros está criando uma chave estrangeira que faz referência a algum campo na tabela Magento padrão. Como resultado, este campo está bloqueado de modificações. E, se o script de instalação nativo tentar atualizar esse campo, ele falhará silenciosamente. Depois disso, todos os scripts de instalação a seguir relacionados a este campo travarão sua atualização.
app / code / local / Mage
Depois de terminar as extensões, é hora de dar uma olhada no seu app/code/local/Mage
diretório. Aqui você encontrará arquivos principais modificados movidos para um local
escopo. Cada um deles certamente custará alguns cabelos grisalhos, porque você nunca sabe (se não foi você quem os colocou lá) o que foi modificado lá e por que motivo. Portanto, você deve comparar cada um deles com uma origem e migrar funcionalidades adicionais para o arquivo correspondente da nova versão.
Tema personalizado
A última modificação fora do núcleo foi o tema personalizado. Pode parecer que não é grande coisa, mas na verdade é uma área cinzenta. O tema base do Magento está sendo modificado de versão para versão e cada tema personalizado deve imitar algumas dessas modificações. Infelizmente, não existe uma bala de prata para determinar o que procurar e o que deve ser migrado. Portanto, esteja preparado para algumas surpresas importantes e pequenos detalhes após a atualização.
Modificações no núcleo
No mundo perfeito, não há nenhum. Mas quando você recebe uma instalação do Magento após ter sido abusada por desenvolvedores de terceiros, que estão oferecendo muito barato, você pode esperar qualquer coisa. Portanto, modificações internas são aquelas que serão substituídas durante o processo de atualização. Na maioria dos casos, isso não produzirá erros, mas, como resultado, você perderá a funcionalidade que foi adicionada de maneira tão brutal.
A única maneira de detectar modificações no núcleo é comparar todos os arquivos da instalação do Magento com arquivos limpos da mesma versão. Eu recomendo fazê-lo com o git. Por quê? Simplesmente porque ele lidará bem com todas as novas linhas e espaços em branco.
Mesmo que sua instalação do Magento não esteja sob o git, você ainda pode copiar seus arquivos em um diretório separado e executar o git init. Em seguida, faça o commit inicial, copie os arquivos Magento “limpos” e execute git status
. Você obterá algo como isto:
Agora, dependendo do número de arquivos modificados, você pode executar git diff
em cada arquivo ou em todo o lote de uma só vez. Isso fornecerá uma referência abrangente de todas as modificações internas feitas. Se você tem alguma visualização git como o phpStorm, a vida é muito mais fácil para você:
Sugiro que git diff > changes.txt
você sempre tenha uma lista de modificações à mão.
Tendo a lista de modificações principais, é possível estimar o que deve ser transferido para a nova versão e quanto tempo será necessário para isso.
Agora, gostaria de dar alguns conselhos para uma atualização real. Esse processo está bem documentado, portanto não escreverei quais comandos executar e onde clicar. No entanto, quero enfatizar várias coisas importantes:
- Estamos assumindo que você está atualizando em seu ambiente de desenvolvimento. Executar a atualização no servidor de produção é um suicídio.
- Não permita que eles alterem nada na produção enquanto estiver atualizando. Coloque seu Magento sob controle de versão ou até mesmo arquivos temporários de bloqueio.
- Desative todas as extensões de terceiros, mas observe quais foram desativadas inicialmente, para que você não as ative posteriormente.
- Verifique se há um script de limpeza Magento em execução no servidor. Caso contrário truncar todas as tabelas começando com
dataflow_*
, log_*
, report_*
.
- Reverta para o tema padrão no momento da atualização.
Após o script de atualização concluído:
- Referenciando o que
changes.txt
você fez antes de migrar todas as modificações internas que realmente valem a pena migrar.
- Migrar
app/code/local/Mage
modificações encontradas antes da atualização.
- Um a um, ative extensões de terceiros.
- Coloque de volta seu tema e compare exaustivamente o resultado com o servidor de produção.
- Implante a produção quando estiver satisfeito com o resultado.
Conclusão
Sei que tudo isso parece assustador, mas se você estiver atualizando regularmente, mantendo seu núcleo limpo e instalando extensões apenas de fornecedores em quem realmente confia, e somente se você realmente precisar delas, não enfrentará a maioria das dificuldades descritas neste artigo. Mantenha seu Magento EcoSystem saudável e você será recompensado.
Post Scriptum
Em casos muito complicados, faz sentido começar tudo de novo com uma nova instalação do Magento mais recente e migrar o tema e a funcionalidade da sua loja passo a passo. Definitivamente, isso levará tempo, mas no final você terá um sistema Magento saudável, com total consciência do que está acontecendo.