sexta-feira, 23 de setembro de 2011

Deploy to Cloud... o caso do gx_last_transfer.zip

Genexus Ev2 está facilitando muito a vida do desenvolvedor, com a propriedade Deploy To Cloud, uma característica que permite publicar o database + aplicação na nuvem da Amazon, simples, rapido, quer facilidade maior?  Essa propriedade do Environment, automatiza totalmente a prototipação do sistema na Cloud, criando as tabelas, copiando os programas, gerando o acesso via QR Code, ou seja, tudo para prototipar a aplicação no dispositivo final.
Bom, a unica complicação é que estamos ainda em uma versão Beta, e algumas situações ocorrem, uma delas me atrapalhou um pouco, mas foi rapidamente resolvida.

Existe todo um ritual até que as mensagens de deploy sejam enviadas por meio de um arquivo chamado gx_last_transfer.zip.  Caso esteja vendo em sua kb as mensagens abaixo, pode desconsiderar esse post, não é pra voce.

ruby gxdeploy_build_transfer.rb
Building file gx_last_transfer.zip...
Uploading 1998 Kbytes
1743 Kbytes left
1488 Kbytes left
1233 Kbytes left
978 Kbytes left
723 Kbytes left
468 Kbytes left
213 Kbytes left
Deploying website


Por outro lado, se estiver vendo algo como:

Z:/Models/Siga_2/RubyModel/web/gxdeploy_services.rb:2:in `'
from gxdeploy_build_transfer.rb:1:in `require'
from gxdeploy_build_transfer.rb:1:in `
'

error: System.IO.FileNotFoundException: Não foi possível localizar o arquivo 'Z:\Models\Siga_2\RubyModel\web\gx_last_transfer.zip'.
Nome do arquivo: 'Z:\Models\Siga_2\RubyModel\web\gx_last_transfer.zip'
   em System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   em System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   em System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   em System.IO.File.ReadAllBytes(String path)
   em Artech.Packages.Genexus.BL.Services.RunServices.RunRuby.DeployCloudApp(KBModel model, String& diag) em Artech.Packages.Genexus.BL.Services.RunServices.RunRuby.GetEntry(KBModel model, IEnumerable`1 tokens, Boolean isReorg, Boolean createDataBase, IEquatable`1 pgmType, IEquatable`1 mainType, EntryName entryName)
   em Artech.Genexus.Common.Run.RunBase.BuildCommand(KBModel model, IEnumerable`1 tokens, Boolean isReorg, Boolean createDataBase, IEquatable`1 pgmType, IEquatable`1 mainType, EntryName cmdType, String& command)
   em Artech.Packages.Genexus.BL.Services.RunServices.RunRuby.Execute(KBModel model, EntityKey objKey, String execParams)
Execution Failed
Run Developer Menu Failedv

Então precisa de alguns ajustes, que graças ao Armin, foram rapidamente detectados e realizados.

O  Genexus Ev2 gera a instalação do Ruby no caminho C:\Program Files (x86)\Artech\GeneXus\GeneXusXEv2\gxruby\win\ruby\bin, ao inves do tradicional  C:\ruby. O caminho para o compilador deve ser corrigido para que ocorra o Deploy to Cloud.

Para isso altere o caminho da variável PATH (local e sistema), apontando para o diretório gx\gxruby\win\ruby\bin, verifique também se existe alguma definição prévia para o caminho antigo (C:\ruby) que deve ser removido. Em seguida reinicie o computador.