A função do Cloud Run é executada em um ambiente que consiste em uma versão do sistema operacional com pacotes complementares, suporte a linguagens e a biblioteca Ruby Functions Framework que dá suporte e invoca a função. Esse ambiente é identificado pela versão da linguagem e é conhecido como ID de execução.
Preparação de funções
É possível preparar uma função diretamente do console do Google Cloud ou gravá-la na máquina local e fazer upload dela. Para preparar a máquina local para desenvolvimento do Ruby, consulte Configurar um ambiente de desenvolvimento do Ruby.
Ambientes de execução e imagens de base do Ruby com suporte
Ambiente de execução | ID do ambiente de execução | Pilhas | Imagem de base do ambiente de execução |
---|---|---|---|
Ruby 3.3 | ruby33 |
|
|
Ruby 3.2 | ruby32 |
|
|
Ruby 3.0 | ruby30 | google-18-full | google-18-full/ruby30 |
Ruby 2.7 | ruby27 | google-18-full | google-18-full/ruby27 |
Ruby 2.6 | ruby26 | google-18-full | google-18-full/ruby26 |
Selecionar o ambiente de execução
É possível selecionar um dos ambientes de execução do Ruby com suporte para a função durante a implantação.
É possível selecionar uma versão do ambiente de execução usando o console do Google Cloud ou a CLI gcloud. Clique na guia para conferir instruções sobre como usar a ferramenta de sua preferência:
gcloud
Especifique a imagem de base do Ruby para a função usando a flag --base-image
ao implantar a função. Exemplo:
gcloud beta run deploy FUNCTION \
--source . \
--function FUNCTION_ENTRYPOINT \
--base-image ruby33
Substitua:
FUNCTION pelo nome da função que você está implantando. É possível omitir esse parâmetro inteiramente, mas será solicitado o nome, se você omiti-lo.
FUNCTION_ENTRYPOINT: o ponto de entrada da função no código-fonte. Esse é o código que o Cloud Run executa quando é executada. O valor dessa sinalização precisa ser um nome de função ou de classe totalmente qualificada no código-fonte.
Para instruções detalhadas sobre como implantar uma função usando a CLI gcloud, consulte Implantar funções no Cloud Run.
Console
É possível selecionar uma versão do ambiente de execução ao criar ou atualizar uma função do Cloud Run no console do Google Cloud. Para instruções detalhadas sobre como implantar uma função, consulte Implantar funções no Cloud Run.
Para selecionar um ambiente de execução no console do Google Cloud ao criar uma função, siga estas etapas:
No console do Google Cloud, acesse a página do Cloud Run:
Clique em Escrever uma função.
Na lista Ambiente de execução, selecione uma versão do ambiente de execução do Ruby.
Clique em Criar e aguarde o Cloud Run criar o serviço usando uma revisão do marcador de posição.
O console vai redirecionar você para a guia Origem, em que você pode ver o código-fonte da sua função. Clique em Salvar e implantar novamente.
Para instruções detalhadas sobre como atualizar a versão do ambiente de execução depois que a função for implantada, consulte Reimplantar o novo código-fonte.
Estrutura do código-fonte
Para que as funções do Cloud Run encontrem a definição da sua função, seu código-fonte precisa seguir uma estrutura específica. Consulte Escrever funções do Cloud Run para mais informações.
Especificar as dependências
As funções do Cloud Run escritas em Ruby usam o bundler para acessar as dependências.
O Functions Framework é uma dependência necessária para todas as funções. Embora as funções do Cloud Run o instalem em seu nome quando a função é criada, recomendamos que você a inclua como uma dependência explícita para maior clareza.
Se a
função depende de dependências particulares, recomendamos que você
espelhe functions-framework
no registro particular. Inclua o functions-framework
espelhado como uma dependência da sua função para evitar a instalação do
pacote pela Internet pública.
Cada função precisa fornecer um Gemfile
que especifique a gem
functions_framework
, junto com qualquer outra gem necessária para a função. Gemfile
precisa estar no
mesmo diretório que o arquivo app.rb
que contém o código da função. Além
disso, a função precisa fornecer um arquivo de bloqueio que especifique todas as
dependências transitivas e as respectivas versões. Este arquivo, Gemfile.lock
, também
está localizado no mesmo diretório junto com Gemfile
.
Quando você implanta sua função, o Cloud Run faz o download e instala
as dependências declaradas em Gemfile
e Gemfile.lock
usando bundler
.
O Gemfile
lista os pacotes obrigatórios para a função junto com
as restrições de versão opcionais. Para mais detalhes, consulte a
referência do Gemfile.
Veja abaixo um exemplo de Gemfile
:
source "https://rubygems.org" gem "functions_framework", "~> 0.7" gem "google-cloud-storage", "~> 1.29"
Como empacotar dependências locais
Também é possível empacotar e implantar dependências junto com sua função. Essa abordagem é útil se a dependência não estiver disponível usando o gerenciador de pacotes rubygems.
Para empacotar uma gem localmente, inclua-a em um diretório na estrutura de diretórios da sua
função e informe o caminho na entrada Gemfile
da dependência. O diretório da
gem precisa incluir um arquivo gemspec
válido, que precisa estar localizado na
hierarquia de diretórios da função para que o código seja implantado com a
função. Por exemplo, é possível usar uma estrutura de diretório como a
seguinte:
myfunction/ ├── Gemfile ├── Gemfile.lock ├── app.rb └── my_private_gem/ ├── lib/ | └── my_private_gem.rb └── my_private_gem.gemspec
A entrada Gemfile
pode ter esta aparência:
source "https://rubygems.org" gem "functions_framework", "~> 0.7" gem "my_private_gem", path: "./my_private_gem"
Consulte a referência do Gemfile para mais discussões sobre como fazer referência a caminhos de gemas locais.