This section highlights the realtime resources available for Ruby / Rails developers.


Realtime Ruby/Rails Libraries

Actioncable: Integrated WebSockets for Rails – Action Cable seamlessly integrates WebSockets with the rest of your Rails application. It allows for real-time features to be written in Ruby in the same style and form as the rest of your Rails application, while still being performant and scalable. It’s a full-stack offering that provides both a client-side JavaScript framework and a server-side Ruby framework. You have access to your full domain model written with Active Record or your ORM of choice.

Plezi: A Ruby framework for realtime web applications – Plezi is a Ruby framework for realtime web applications. It’s name comes from the word “pleasure”, since Plezi is a pleasure to work with. With Plezi, you can easily: Create a Ruby web application, taking full advantage of RESTful routing and scalable Websocket features; Add Websocket services your existing Web-App, (Rails/Sinatra or any other Rack based Ruby app); Create an easily scalable backend for your SPA.

Pakyow: A realtime Ruby web framework – Pakyow is a Ruby web framework that lets you create fantastic experiences for your users without writing any client-side code. Build modern server-driven applications that don’t compromise on speed or usability. Pakyow automatically keeps your presentation layer in sync with state of the server. It works out of the box with no additional code.  Create a working prototype of your project with plain HTML. Later, build right on top of the prototype without throwing it out. We think that a democratic web presupposes a simpler web. Pakyow optimizes for simplicity, which makes it easier to start and leads to long-term productivity.

Firehose: Build realtime Ruby web applications. Created by Poll Everywhere – Firehose is both a Rack application and JavaScript library that makes building real-time web applications possible.

Slack Ruby Client: A Ruby and command-line client for the Slack Web and Real Time Messaging APIs. –  A Ruby client for the Slack Web and RealTime Messaging APIs. Comes with a handy command-line client, too. If you are not familiar with these concepts, you might want to watch this video.

Realtime Rails: Realtime rails support – As of mid-2015, support for performant, native and scalable websockets are available in Rails. See ActionCable, which landed in Rails 5 and will probably be officially released early/mid 2016.  As such, with ActionCable‘s design, you don’t even need a separate pub/sub server (redis) and Node.js running anymore to achieve similar lightweight realtime bi-directional communication with a large number of connected clients to your Rails application.

Awesome Ruby:  A collection of awesome Ruby libraries, tools, frameworks and software – A categorized community-driven collection of awesome Ruby libraries, tools, frameworks and software. The essential Ruby to build modern Apps and Web Apps.

Unimidi: MIDI IO for Ruby – A platform independent realtime MIDI input and output for Ruby. Also see MicroMIDI which builds a full MIDI messaging DSL on top of this library.

Cramp: Real-time web application framework in Ruby – Cramp is a fully asynchronous realtime web application framework in Ruby. It is built on top of EventMachine and primarily designed for working with larger number of open connections and providing full-duplex bi-directional communication.

Render_Sync: Realtime rails partials – Real-time partials with Rails. Sync lets you render partials for models that, with minimal code, update in realtime in the browser when changes occur on the server.


Realtime Web Applications with Ruby on Rails

Specs

  • Author: Codescrum
  • August 2016

Resources

Synopsis

Ruby on Rails can be used now to build real-time web applications out of the box! From version 5, the Rails framework incorporates ActionCable, an integrated websocket implementation. ActionCable is a full-stack offering that provides both a client-side JavaScript framework and a server-side Ruby framework.

 


Realtime Web Apps with Volt in Ruby

Specs

  • Author: Dhaivat Pandya
  • February 2015

Resources

Synopsis

Volt is a slick, new Ruby web framework that aims to blur the line between client and server code. The basic idea behind the framework is that you can write your client-side code (which is usually Javascript) in Ruby using Opal, a Ruby runtime within Javascript. In addition, Volt provides some nice ways to relay data between the client-side and the server-side. If you’ve used Meteor before, Volt is a very similar idea, but there are many portions of Meteor which Volt doesn’t have. I think Volt has some real potential. As web apps become more and more client-side heavy, it is a pain to have to switch mental context between Javascript and Ruby. It’s even more of a pain to figure out how to flow simple pieces of data between the client and server. Volt can help you get there quickly.

In this article, I’ll go through how to build an incredibly simple bookmark “app” with Volt. The point of this article is to get you up to speed with some of the very basics and to get you a feel for how the client/server divide works in Volt. Let’s get to it.


Real-Time Rails: Implementing WebSockets in Rails 5 with Action Cable

Specs

  • Author: Sophie Debenedetto
  • May 2016

Resources

Synopsis

Recent years have seen the rise of “the real-time web.” Web apps we use every day rely on real-time features—the sort of features that let you see new posts magically appearing at the top of your feeds without having to lift a finger.

While we may take those features for granted, they represent a significant departure from the HTTP protocol’s strict request-response pattern. Real-time web, by contrast, loosely describes a system in which users receive new information from the server as soon as it is available—no request required.

There are a number of strategies and technologies for implementing such real-time functionality, but the WebSocket protocol has been rising to prominence since its development in 2009. However, up until very recently, implementing the WebSocket protocol in Rails was difficult. There was no native support, and any real-time feature required integrating third party libraries and strategies like Faye or JavaScript polling. So let’s take a closer look at WebSockets and how Rails 5 has evolved to support real-time apps with Action Cable.


Realtime Infrastructure Services

  • Realtime API Infrastructure – Realtime API infrastructure specifically allows developers to build realtime data push into their existing APIs.  Typically, you would not need to modify your existing API contracts, as the streaming server would serve as a proxy. The proxy design allows these services to fit nicely within an API stack. This means it can inherit other facilities from your REST API, such as authentication, logging, throttling, etc. It can be combined with an API management system.  In the case of WebSocket messages being proxied out as HTTP requests, the messages may be handled statelessly by the backend. Messages from a single connection can even be load balanced across a set of backend instances.
    • Fanout/Pushpin – Fanout is a real-time API development kit that helps you push data to connected devices easily. Fanout is a cross between a reverse proxy and a message broker. Pushpin is the open source version.
    • Streamdata.io – Streamdata.io a SaaS API proxy tool that converts standard API requests into a streaming API. In other words, it provides a proxy as a service for any HTTP API by polling and acting as a streaming API.
    • LiveResource – LiveResource is a protocol specification and JavaScript reference library for receiving live updates of web resources. It has the following principles:
  • Realtime Application Infrastructure – Realtime app infrastructure sends data to browsers and clients. It typically uses pub/sub messaging, webhooks, and/or websockets — and is separate from an application or service’s main API.
    • Firebase – Firebase is a BaaS (Backend-as-a-Service) that allows developers to create web applications with no server-side programming required.
    • Pubnub – PubNub is a programmable Data Stream Network (DSN) and realtime infrastructure-as-a-service (IaaS) company. Primarily, they are a messaging solution hosted on a cloud service that allows developers to publish data instantly to one or multiple devices.
    • Pusher – Pusher is a hosted service that allows developers to add realtime bi-directional functionality via WebSockets (with HTTP-based fallbacks) to the web and mobile apps.
    • Ably – Ably is a realtime data delivery platform that provides creators the tools to create, deliver, and manage projects. Their main realtime functionality consists of pub/sub, presence, authentication, encryption, and connection state recovery.