Using the Ruby Runtime with Serverless Functions
Learn how to use the Ruby runtime to compile Ruby Serverless Functions on Vercel.The Ruby runtime is used by Vercel to compile Ruby Serverless Functions that define a singular HTTP handler from .rb
files within an /api
directory at your project's root.
Ruby files must have one of the following variables defined:
Handler
proc that matches thedo |request, response|
signature.Handler
class that inherits from theWEBrick::HTTPServlet::AbstractServlet
class.
For example, define a index.rb
file inside a /api
directory as follows:
require 'cowsay'
Handler = Proc.new do |request, response|
name = request.query['name'] || 'World'
response.status = 200
response['Content-Type'] = 'text/text; charset=utf-8'
response.body = Cowsay.say("Hello #{name}", 'cow')
end
Inside a Gemfile
define:
source "https://rubygems.org"
gem "cowsay", "~> 0.3.0"
New deployments use Ruby 3.3.x as the default version.
You can specify the version of Ruby by defining ruby
in a Gemfile
, like so:
source "https://rubygems.org"
ruby "~> 3.3.x"
When defining a Ruby version, the following Ruby versions can be selected:
- 3.3.x (default)
- 3.2.x (default for legacy build image)
The following Ruby versions were previously available, but now have been disabled:
- 2.7.x (disabled since December 7th 2023)
- 2.5.x (disabled since November 30th 2021)
If the patch part of the version is defined, like
3.3.1
it will be ignored and assume the latest
3.3.x
.
This runtime supports installing dependencies defined in the Gemfile
. Alternatively, dependencies can be vendored with the bundler install --deployment
command (useful for gems that require native extensions). In this case, dependencies are not built on deployment.
Was this helpful?