Muitos aplicativos precisam gerenciar sessões de autenticação e preferências do usuário. O Sinatra tem uma implementação baseada em memória para executar essa função. No entanto, essa implementação não é adequada para um app que pode ser veiculado de várias instâncias, porque a sessão gravada em uma instância pode ser diferente nas outras. Veja neste tutorial como gerenciar sessões no App Engine.
Objetivos
- Gravar o aplicativo.
- Executar o aplicativo localmente.
- Implantar o aplicativo no App Engine.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Firestore API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Firestore API.
- Criar seu ambiente de desenvolvimento.
Como configurar o projeto
Na janela de terminal, inicie em um diretório de sua escolha e crie um novo diretório chamado
sessions
. Todo o código deste tutorial está dentro do diretóriosessions
.Mude para o diretório
sessions
:cd sessions
Inicialize o
Gemfile
:bundle init
Anexe o seguinte ao Gemfile resultante:
O Gemfile lista todas as bibliotecas do Ruby não padrão que seu aplicativo precisa do App Engine para carregar:
google-cloud-firestore
é o cliente Ruby para a API Firestore.Sinatra é o framework da Web do Ruby usado para o app.
Instale as dependências:
bundle install
Como gravar o app da Web
Esse aplicativo exibe saudações em idiomas diferentes para cada usuário. Os usuários retornantes são sempre recebidos no mesmo idioma.
Com um editor de texto, crie um arquivo chamado
app.rb
no diretóriosessions
com este conteúdo:
Como criar o armazenamento de sessão
Para que o app possa armazenar as preferências de um usuário, você precisa de uma maneira de armazenar informações sobre o usuário atual em uma sessão. Veja no diagrama a seguir como o Firestore gerencia as sessões do aplicativo do App Engine.
O Sinatra tem suporte integrado para salvar dados da sessão em um cookie. Para salvar no Firestore, é preciso definir seu próprio objeto Rack::Session
.
No diretório
sessions
, crie um arquivo chamadofirestore_session.rb
com este conteúdo:
Como excluir sessões
Conforme descrito, este app não exclui sessões antigas ou expiradas. É possível excluir dados de sessão no Console do Google Cloud ou implementar uma estratégia de exclusão automática.
Como executar no local
Inicie o servidor HTTP:
bundle exec ruby app.rb
Veja seu app no navegador da Web:
Você verá uma das cinco saudações: "Hello World", "Hallo Welt", "Hola mundo", "Salut le Monde" ou "Ciao Mondo." O idioma será alterado se você abrir a página em um navegador diferente ou no modo de navegação anônima. É possível ver e editar os dados da sessão no Console do Google Cloud.
Para interromper o servidor HTTP, pressione
Control+C
na janela do terminal.
Como implantar e executar no App Engine
Use o ambiente padrão do App Engine para criar e implantar um aplicativo que seja executado de forma confiável sob carga pesada e com grandes quantidades de dados.
Neste tutorial, o ambiente padrão do App Engine é usado para implantar o servidor.
Na sua janela de terminal, crie um arquivo
app.yaml
e cole o seguinte nele:Implante o aplicativo no App Engine:
gcloud app deploy
Veja o aplicativo ativo no URL a seguir, em que
PROJECT_ID
é o ID do projeto no Google Cloud:https://PROJECT_ID.appspot.com
A saudação agora é entregue por um servidor da Web em execução em uma instância do App Engine.
Como depurar o aplicativo
Se você não conseguir se conectar ao aplicativo do App Engine, verifique o seguinte:
- Verifique se os comandos de implantação
gcloud
foram concluídos com êxito e não geraram erros. Se houver erros (por exemplo,message=Build failed
), corrija-os e tente implantar o aplicativo do App Engine novamente. No console do Google Cloud, acesse a página do Explorador de registros.
Acessar a página Explorador de registros
Na lista suspensa Recursos selecionados recentemente, clique em Aplicativo App Engine e, em seguida, clique em Todos os module_id. Você verá uma lista de solicitações de quando visitou seu aplicativo. Caso contrário, verifique se você selecionou Todos os module_id na lista suspensa. Se você vir mensagens de erro impressas no console do Google Cloud, verifique se o código do app corresponde ao código na seção sobre como escrever o app da Web.
Verifique se a API Firestore está ativada.
Limpar
Excluir o projeto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Excluir a instância do App Engine
- In the Google Cloud console, go to the Versions page for App Engine.
- Select the checkbox for the non-default app version that you want to delete.
- Para excluir a versão do app, clique em Excluir.
A seguir
- Veja outros tutoriais do Cloud Functions.
- Saiba mais sobre o App Engine.
- Teste o Cloud Run, que permite executar contêineres sem estado em um ambiente totalmente gerenciado ou em seu próprio cluster do Google Kubernetes Engine.