Crear una aplicación Ruby

Especificar versiones de Ruby

El proyecto buildpacks ofrece asistencia para la versión actual y la versión LTS activa de Ruby. Hay versiones anteriores de Ruby disponibles, pero es posible que el proyecto no las mantenga activamente.

Estás usando Gemfile.lock

Si tu aplicación usa bundler, deberías tener Gemfile.lock en la raíz de tu repositorio. Los buildpacks de Ruby usarán automáticamente una versión bloqueada en tu Gemfile.lock. Por ejemplo, si tu archivo Gemfile.lock tiene el siguiente contenido:

RUBY VERSION
  ruby 3.0.3p0

Los buildpacks usarán automáticamente Ruby 3.0.3 con el nivel de parche más reciente.

Estás usando GOOGLE_RUNTIME_VERSION

Si no usas bundler, puedes especificar una versión de Ruby con la variable de entorno de la siguiente manera:

pack build --builder=gcr.io/buildpacks/builder \
   sample-ruby \
   --env GOOGLE_RUNTIME_VERSION=3.0.3

También puedes usar un descriptor de proyecto project.toml para codificar la variable de entorno junto con los archivos de tu proyecto. Consulta las instrucciones para compilar la aplicación con variables de entorno.

Si usas bundler,GOOGLE_RUNTIME_VERSION no se puede usar para anular la versión especificada en Gemfile.lock en RUBY VERSION.

Instalar dependencias

Usar Bundler

  • Bundler es el gestor de paquetes predeterminado
  • Confirma Gemfile.lock en tu repositorio, ya que usamos el archivo de bloqueo para compilar la aplicación.
  • De forma predeterminada, solo se instalan las dependencias de producción

Versión de Bundler

Bundler tiene problemas de compatibilidad. Si tu aplicación usa bundler, debido a varios problemas de compatibilidad con Ruby y Rubygems, actualizamos el archivo Gemfile.lock de la aplicación compilada para que use una de las dos versiones admitidas. Todas las aplicaciones que usen bundler 1.* y 2.* en BUNDLED WITH se normalizan para usar bundler 1.17.3 y 2.3.15.

Especificar un punto de entrada

Usar Procfile

Puedes especificar un punto de entrada, un comando que se ejecuta cuando se inicia el contenedor, mediante Procfile. Por ejemplo, si tienes lo siguiente en el archivo Procfile de la raíz de tu aplicación:

web: ruby main.rb

El paquete de compilación de Ruby usará el comando ruby main.rb como punto de entrada del contenedor compilado. De forma predeterminada, se usa el objetivo web del archivo Procfile.

Para usar otro punto de entrada, puedes especificar otro destino de tu Procfile como argumento.

Con un Procfile que contenga lo siguiente: web: ruby main.rb custom: ruby custom.rb

Puedes usar el destino Procfile personalizado pasándolo como argumento: bash pack build --builder=gcr.io/buildpacks/builder \ sample-ruby \ --entrypoint=custom

Estás usando GOOGLE_ENTRYPOINT

Si no usas un archivo Procfile o quieres anularlo, puedes especificar un punto de entrada mediante la variable de entorno GOOGLE_ENTRYPOINT. Veamos un ejemplo:

pack build --builder=gcr.io/buildpacks/builder \
   sample-ruby \
   --env GOOGLE_ENTRYPOINT="ruby custom.rb"

Variables de entorno

El paquete de compilación de Ruby admite las siguientes variables de entorno para personalizar tu contenedor:

BUNDLE_

Consulta la bundler documentación.

Ejemplo: BUNDLE_TIMEOUT=60 define --timeout=60 para los comandos bundle.