Dois ambientes, Produção e Des. e conexões diferente, form dá erro ao ser gerado

Olá pessoal,

temos dois ambientes e banco de dados distintos de Desenvolvimento e Produção.

Desenvolvemos usando uma base de testes idêntica a de Produção, tendo 2 projetos praticamente idênticos.
Quando a aplicação está pronta e testada no Projeto de Desenvolvimento, inclusive é publicada no domínio de desenvolvimento, copiamos a aplicação para o Projeto de Produção para publicar no domínio de Produção.

No Projeto de Produção, abrimos a Aplicação para trocar a conexão para o BD de Produção e publicar a Aplicação, mas está ocorrendo um erro ao gerar a Aplicação para publicá-la:
Fatal error: Call to a member function Close() on a non-object in /home/softasso/public_html/scriptcase/devel/lib/php/database.inc.php on line 3300

Ao Executar a Aplicação, também ocorre um erro:
ocorreu um erro ao realizar a conexão com o banco de dados. Connection attempt failed: invalid data source name | Script: /home/softasso/public_html/scriptcase/devel/compat/nm_select.class.php linha: 420

Tudo está rodando em ambiente web, num VPS.
Essa estrutura tem o objetivo de testar e homologar as aplicações, antes de efetivamente publicá-las em Produção.

  1. Como resolver esse erro?
  2. Como vocês trabalham com o Desenvolvimento e Produção, vocês tem dois ambientes distintos rodando a mesma aplicação, mas com BD separados? Ou há um forma melhor de fazer isso?

Obrigado.
João Carlos

Bom dia João Carlos.

Tambem estou com esse mesmo problema… alguem ou você mesmo já conseguiu resolver?

Obrigado Fernando Pereira

Bom dia, você usa logs? Se sim desabilita e testa…

vcs nao podem copiar um projeto já publicado e configurado.
vai dar problema…
suba a aplicação normalmente, configure…
para atualizar apenas descompacte seu zip por cima…

Jean,

eu não copio o Projeto Publicado, eu publico no Desenvolvimento, estando tudo certo:

Altero a conexão do BD de Desenvolvimento para Produção;
Exporto para a o Projeto de Produção;
Gero (atualizo) dentro do Projeto de Produção;
Publico no domínio de Produção;

No SC são dois projetos distintos e separados, com conexões distintas e publicações distintas.

Rodrigo: Ainda não estou usando Logs.

Fernando:

Aparentemente foi resolvido, pelo que percebi, o erro ocorria porque eu copiava as Aplicações para o Projeto de Produção com a conexão de Desenvolvimento.
Criei uma conexão no Desenvolvimento com o BD de Produção.
Quando a Aplicação está testada e aprovada, altero a conexão para a de Produção.
Copio a Aplicação para o Projeto de Produção.
Lá no Projeto de Produção, gero novamente a Aplicação, já conectada com o BD de Produção.
Faço a Publicação.
O erro parou de aparecer.

Fazemos dessa forma, pois se algo sair errado, estando em desenvolvimento podemos apagar a aplicação e refazê-la.
Talvez isso seria resolvido com o Controle de Versão, mas não tivemos tempo de verificar se esse controle efetivamente funciona.
Antes do SC, usávamos o Netbeans que tem um excelente controle de Versão e Histórico de evolução do código, se algo estivesse errado, podíamos voltar pelo Histórico ou pelo Versionamento.

É Clarck,
paciência de Jó né? Fica tranquilo não me ofendi não.
É que começamos usar totalmente o SC a pouco tempo, como já disse, tudo era no Netbeans.

Ainda estamos estudando como o Controle de Versão do SC funciona, pra ver se não fazemos nada errado.

O objetivo de termos dois ambientes, é proteger o trabalho de outros, trabalhamos em equipe, então se alguém faz algo errado, dá pra consertar sem grandes problemas.
Dias atrás, implementamos o Módulo de Segurança no Desenvolvimento, deu um pau danado nas aplicações.

Apagamos tudo e criamos outro Desenvolvimento baseado no Projeto de Produção, se tivesse feito isso na Produção, tinha ferrado todo o Projeto da Produção.

Outra razão de ter o Desenvolvimento, é que trabalhamos com o BD de Desenvolvimento, podendo “sujar” o BD sem problemas, nesse Projeto só mudamos a Conexão para o BD produção, na hora de copiar para o Projeto de Produção, na realidade queríamos era ter a Conexão Desenvolvimento no Projeto de Produção e somente lá dentro, alterar a Conexão de Desenvolvimento para Produção, mas daí dá o erro que relatei no início.

Por enquanto essa foi a forma que encontramos de Desenvolver sem risco no Projeto de Produção, é trabalhoso? É trabalhoso e por isso que perguntamos a quem trabalha a mais tempo com o SC se existe um forma mais fácil, se o Incremento de Versão do SC funciona legal, tipo versão 20 td ok, na versão 21 alguém faz algo que torna necessário refazer, recupera-se tranquilamente a versão anterior?

O objetivo maior é proteger o que está funcionando e a partir dali fazer implementações com segurança de que se algo de errado, podemos voltar e recomeçar.

Gostei da sua sugestão de publicar Zip1, Zip2, etc, mas você utiliza BD de produção e desenvolvimento? Se sim, vc muda a conexão na hora de gerar o Zip e publicar?

Grande abraço!
João Carlos

Eu só não entendi porque abrir a aplicação só pra trocar a conexão, crie uma função com uma condição que detecte o ambiente em que você esta rodando a aplicação e de acordo com o ambiente é só trocar a conexão dinamicamente.
Você pode usar o dominio, o subdominio, o diretório… tudo isso serviria pra identificar se esta em produção ou desenvolvimento, com isso você economiza um processo na hora de publicar.

Eu também uso no mesmo ambiente, só que eu crio um subdominio pro dev, isso já basta pro servidor web separar as coisas.

Ahh ta agora eu entendi… realmente,

Clarck,

o SC está somente no Desenvolvimento, está assim:
dominio/sc = Scritpcase
dominio/des = publicação para testes do desenvolvimento e homologação
dominio/app = publicação de produção

Dentro do SC temos 2 projetos, uma de Desenvolvimento e outro de Produção, que fazemos como já relatado.

Gostei das suas dicas, são boas opções.
Muito obrigado por compartilhar.

Boa tarde.
Apesar de ser antigo este artigo, assim mesmo resolvi escrever aqui para complementar.
Eu uso o SC81 num cloud onde está instalado a produção, desta forma já descrita aqui, a diferença é que uso a mesma base de dados, pra mim facilita muito quando preciso incluir um campo no banco de dados, isto corrige toda base de todos os clientes.
Uso o mesmo banco de dados para vários clientes, sendo que em cada tabela eu tenho o código do cliente e a aplicação é a mesma para todos.
Para testar os programas eu utilizo uma empresa teste que é a minha, assim não altero dados nas tabelas dos clientes.
Nunca tive problema com isso, muito pelo contrário. Tem que ter um certo cuidado quando for incluir um campo novo, sempre depois do ultimo campo, caso contrário dá zebra.
Abs. a todos.
Chaia