Compila una aplicación de Ruby

Especifica versiones de Ruby

El proyecto de paquetes de compilación proporciona compatibilidad con la versión actual y la versión activa LTS de Ruby. Las versiones anteriores de Ruby están disponibles, pero es posible que el proyecto no las mantenga activamente.

Usa Gemfile.lock

Si tu aplicación usa bundler, deberías tener Gemfile.lock en la raíz de tu repositorio. Los paquetes de compilación de Ruby usarán automáticamente una versión que esté bloqueada en tu Gemfile.lock. Por ejemplo, si tu Gemfile.lock tiene lo siguiente:

RUBY VERSION
  ruby 3.0.3p0

Los paquetes de compilación usarán automáticamente Ruby 3.0.3 con el último nivel de parche.

Usa 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 proyectos 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.

Instala dependencias

Usa Bundler

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

Versión de Bundler

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

Especifica un punto de entrada

Usa Procfile

Puedes especificar un punto de entrada, un comando que se ejecuta cuando se inicia el contenedor, mediante Procfile. Por ejemplo, con lo siguiente en tu Procfile en la raíz de tu app:

web: ruby main.rb

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

Para usar un punto de entrada diferente, puedes especificar un objetivo diferente de tu Procfile como argumento.

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

Puedes usar el destino de Procfile personalizado si lo pasas como un argumento: bash pack build --builder=gcr.io/buildpacks/builder \ sample-ruby \ --entrypoint=custom

Usa GOOGLE_ENTRYPOINT

Si no usas un Procfile o deseas anular el Procfile, puedes especificar un punto de entrada mediante la variable de entorno GOOGLE_ENTRYPOINT. Por 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_

Ve la documentación de bundler.

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