Specifying Versions of Ruby
The buildpacks project provides support for the current release and Active LTS release of Ruby. Older releases of Ruby are available but may not be actively maintained by the project.
Using Gemfile.lock
If your application uses bundler, you should have Gemfile.lock at the root of your repo. Ruby buildpacks will automatically use a version that's locked in your Gemfile.lock. For example, if your Gemfile.lock has the following:
RUBY VERSION
ruby 3.0.3p0
The buildpacks will automatically use Ruby 3.0.3, with the latest patch level.
Using GOOGLE_RUNTIME_VERSION
If you're not using bundler, you can specify a ruby version using the environment variable as follows:
pack build --builder=gcr.io/buildpacks/builder \
sample-ruby \
--env GOOGLE_RUNTIME_VERSION=3.0.3
You can also use a project.toml
project descriptor to encode
the environment variable alongside your project files. See instructions on
building the application with environment variables.
If you're using bundler,GOOGLE_RUNTIME_VERSION
can't be used to override the specified version in Gemfile.lock
under RUBY VERSION
.
Installing Dependencies
Using Bundler
- Bundler is the default package manager
- Commit
Gemfile.lock
to your repo since we use the lock file to build the app - By default only production dependencies are installed
Bundler Version
Bundler has known compatibility issues.
If your application uses bundler, due to various compatibility issues with Ruby and Rubygems, we update
the Gemfile.lock in the built app to use one of the two supported versions.
All applications using bundler 1.* and 2.* in BUNDLED WITH
are normalized to use bundler 1.17.3 and 2.3.15.
Specifying an Entrypoint
Using Procfile
You can specify an entrypoint, a command that runs when the container starts, using Procfile. For example, with the following in your Procfile at the root of your app:
web: ruby main.rb
The Ruby buildpack will use the command ruby main.rb
as the entrypoint of the built container.
By default the web
target from the Procfile is used.
To use a different entrypoint, you can specify a different target from your Procfile as an argument.
With a Procfile containing the following:
web: ruby main.rb
custom: ruby custom.rb
You can use the custom Procfile target by passing it as an argument:
bash
pack build --builder=gcr.io/buildpacks/builder \
sample-ruby \
--entrypoint=custom
Using GOOGLE_ENTRYPOINT
If you're not using a Procfile or want to override the Procfile, you can specify an entrypoint
using the GOOGLE_ENTRYPOINT
environment variable. Here's an example:
pack build --builder=gcr.io/buildpacks/builder \
sample-ruby \
--env GOOGLE_ENTRYPOINT="ruby custom.rb"
Environment Variables
The Ruby buildpack supports the following environment variables to customize your container
BUNDLE_
See bundler
documentation.
Example: BUNDLE_TIMEOUT=60
sets --timeout=60
for bundle
commands.