O tempo de execução do Ruby permite-lhe executar a sua app no App Engine num ambiente de sandbox. Este documento explica os detalhes do ambiente de runtime do Ruby, incluindo os cabeçalhos fornecidos ao seu código e outras informações para implementar com êxito a sua aplicação no App Engine.
Especifique o tempo de execução do Ruby para o App Engine no ambiente padrão no ficheiro app.yaml
:
runtime: rubyVERSION
Em que VERSION são os números das versões do Ruby MAJOR
e MINOR
. Por exemplo, para usar a versão mais recente do Ruby, o Ruby 3.4, especifique 34
.
Para outras versões do Ruby suportadas e a versão correspondente do Ubuntu para a sua versão do Ruby, consulte a Programação de apoio técnico de tempo de execução.
Versão do Ruby
A versão mais recente do Ruby suportada é a 3.4. O tempo de execução do Ruby usa a versão estável mais recente da versão especificada no ficheiro app.yaml
. O App Engine é atualizado automaticamente para novas versões de lançamentos de patches, mas não atualiza automaticamente a versão secundária.
Por exemplo, a sua aplicação pode ser implementada no Ruby 2.6.0 e atualizada automaticamente para a versão 2.6.1 numa implementação posterior, mas não é atualizada automaticamente para o Ruby 2.7.
Dependências
Para mais informações sobre como declarar e gerir dependências, consulte o artigo Especificar dependências.
Arranque da aplicação
O tempo de execução inicia a sua aplicação através do entrypoint
definido em
app.yaml
. O ponto de entrada deve iniciar um processo que
responde a pedidos HTTP na porta definida pela variável de ambiente PORT
.
Por exemplo:
entrypoint: bundle exec rails server -p $PORT
A maioria das aplicações Web usa um servidor Web compatível com Rack, como Puma, Unicorn ou Thin.
Tem de adicionar o servidor como uma dependência no ficheiro de configuração Gemfile
da sua aplicação. O tempo de execução instala todas as dependências antes de o ponto de entrada ser chamado.
source "https://rubygems.org"
gem "rack"
gem "puma"
Um exemplo de ponto de entrada que usa o puma para uma aplicação Rails:
entrypoint: bundle exec rails server Puma -p $PORT
Um ponto de entrada de exemplo que usa o puma para qualquer aplicação Rack:
entrypoint: bundle exec rackup -s Puma -p $PORT
Para aplicações que podem processar pedidos sem um servidor Rack, basta executar um script Ruby:
entrypoint: bundle exec ruby app.rb
Variáveis de ambiente
As seguintes variáveis de ambiente são definidas pelo tempo de execução:
Variável de ambiente | Descrição |
---|---|
GAE_APPLICATION
|
O ID da sua aplicação do App Engine. Este ID tem o prefixo "region code~", como "e~" para aplicações implementadas na Europa. |
GAE_DEPLOYMENT_ID |
O ID da implementação atual. |
GAE_ENV |
O ambiente do App Engine. Definido como standard . |
GAE_INSTANCE |
O ID da instância na qual o seu serviço está atualmente em execução. |
GAE_MEMORY_MB |
A quantidade de memória disponível para o processo da aplicação, em MB. |
GAE_RUNTIME |
O tempo de execução especificado no ficheiro app.yaml . |
GAE_SERVICE |
O nome do serviço especificado no ficheiro app.yaml . Se não for especificado nenhum nome de serviço, este é definido como default . |
GAE_VERSION |
A etiqueta da versão atual do seu serviço. |
GOOGLE_CLOUD_PROJECT |
O Google Cloud ID do projeto associado à sua aplicação. |
PORT |
A porta que recebe pedidos HTTP. |
NODE_ENV (disponível apenas no tempo de execução do Node.js) |
Definido como production quando o serviço é implementado. |
Pode definir variáveis de ambiente adicionais no ficheiro app.yaml
, mas os valores acima não podem ser substituídos, exceto o NODE_ENV
.
HTTPS e proxies de encaminhamento
O App Engine termina as ligações HTTPS no equilibrador de carga e encaminha os pedidos para a sua aplicação. Algumas aplicações precisam de determinar o IP e o protocolo do pedido original. O endereço IP do utilizador está disponível no cabeçalho X-Forwarded-For
padrão. As aplicações que requerem estas informações devem configurar a respetiva framework Web para confiar no proxy.
Sistema de ficheiros
O tempo de execução inclui um diretório /tmp
gravável, com todos os outros diretórios a terem acesso só de leitura. A escrita para /tmp
ocupa memória do sistema. Para mais informações, consulte a documentação TempDir
e TempFile
.
Servidor de metadados
Cada instância da sua aplicação pode usar o servidor de metadados do App Engine para consultar informações sobre a instância e o seu projeto.
Pode aceder ao servidor de metadados através dos seguintes pontos finais:
http://metadata
http://metadata.google.internal
Os pedidos enviados para o servidor de metadados têm de incluir o cabeçalho do pedido
Metadata-Flavor: Google
. Este cabeçalho indica que o pedido foi enviado com a intenção de obter valores de metadados.
A tabela seguinte lista os pontos finais onde pode fazer pedidos HTTP para metadados específicos:
Ponto final de metadados | Descrição |
---|---|
/computeMetadata/v1/project/numeric-project-id |
O número do projeto atribuído ao seu projeto. |
/computeMetadata/v1/project/project-id |
O ID do projeto atribuído ao seu projeto. |
/computeMetadata/v1/instance/region |
A região em que a instância está a ser executada. |
/computeMetadata/v1/instance/service-accounts/default/aliases |
|
/computeMetadata/v1/instance/service-accounts/default/email |
O email da conta de serviço predefinido atribuído ao seu projeto. |
/computeMetadata/v1/instance/service-accounts/default/ |
Apresenta todas as contas de serviço predefinidas do seu projeto. |
/computeMetadata/v1/instance/service-accounts/default/scopes |
Lista todos os âmbitos suportados para as contas de serviço predefinidas. |
/computeMetadata/v1/instance/service-accounts/default/token |
Devolve o token de autorização que pode ser usado para autenticar a sua aplicação noutras APIs Google Cloud. |
Por exemplo, para obter o ID do projeto, envie um pedido para
http://metadata.google.internal/computeMetadata/v1/project/project-id
.