What is Ruby on Jets and how to build an app using it?

AWS Lambda is an event-driven, serverless computing platform provided by Amazon as a part of the Amazon Web Services.This service runs code in response to events and automatically manages any computing resources required. It was introduced in November 2014.

Sounds great? Did not for Ruby Developers. Until 29th of November 2018, Ruby was not supported to start serverless revolution. But then, Jets came, and everything has changed.

As the official Ruby on Jets website proudly says:

“Ruby on Jets allows you to create and deploy serverless services with ease, and to seamlessly glue AWS services together with the most beautiful dynamic language: Ruby. It includes everything you need to build an API and deploy it to AWS Lambda. Jets leverages the power of Ruby to make serverless joyful for everyone”

Indeed, working with Jets, especially for someone who’s somehow experienced in Rails or Sinatra, becomes relatively easy and pleasant.

To prove it, in this article we’re going to build a simple serverless application.

Ready?

Building application

What we’re gonna do, is create a very simple Jets app. This will provide us with some basic information of how to create routes, controllers and actions, and how to deploy to AWS Lambda. To keep it simple and easy, we’re gonna use just one endpoint, that will return random Chuck Norris joke. (Check http://www.icndb.com/api/).

Installation

First of all, let’s install Jets gem globally. In your console, type:

Code1

Then, create new Jets project with:

code2

(Options —mode api and —no-database are not required, it’s just gonna speed up installation a little, since we don’t need any database or views here.)

Now, in your chuck-norris-jokes directory run:

Code3

Entering localhost:8888 in your browser, you should see something like this:

Jets

If this is what you see – congrats, you’ve done everything correctly!

Controller and routes

What we’re about to do now is create our first Jets controller.

In the console type:

Code4

This will create our JokesController with one action inside – create. By default, Jets create the „get” type route for the action, so we have to modify it.

In routes.rb file change get „jokes/create” to post ‘jokes’, to: „jokes#create”.

Coding

Fetching the request

To fetch some Chuck Norris stuff we need to make a call to the John Doe Api. Then, we’re gonna respond with json containing the fetched joke.

Ruby

Testing locally

We can run this locally to test that we are getting the expected response. What we’re going to do is make a POST request to our local server using curl.

(Watch out: make sure your server is still running).

Code5

Deploy

Providing you have an AWS account with appropriate policies (you can find them in official Jets documentation), the last thing you need to do is simply run:

Code6

This will upload our application to AWS.

When the deploy is finished, you’ll be provided with your API gateway endpoint (most likely the last line in the console).

Test your AWS Lambda application

So now, finally it’s time to test our deployed app!

We can do this using curl again, but now replacing localhost with API gateway endpoint, we were provided with.

Code7

Summary

That’s all folks! Hope you enjoyed this brief look into Ruby on Jets and serverless world.

Read more:

– Object oriented programming. That’s not how you think

– Codest’s weekly report of best tech articles. Speed and scale software (7)

– The Ruby Conference of Cracow. We were there!

Did you like it? Share this article

Next

Let's start a project

Estimate project