Using the Ruby Runtime with Vercel Functions
The Ruby runtime is used by Vercel to compile Ruby Vercel 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:
Handlerproc that matches thedo |request, response|signature.Handlerclass that inherits from theWEBrick::HTTPServlet::AbstractServletclass.
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')
endAn example index.rb file inside an
/api directory.
Inside a Gemfile define:
source "https://rubygems.org"
gem "cowsay", "~> 0.3.0"An example Gemfile file that defines
cowsay as a dependency.
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"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?