Drifting Ruby's repositories
445-streaming-llm-responses
In this episode, we look at running a self hosted Large Language Model (LLM) and consuming it with a Rails application. We will use a background to make API requests to the LLM and then stream the responses in real-time to the browser.
395-transcribing-with-artificial-intelligence
In this episode, we look at creating an audio transcription service which allows files uploaded from Active Storage to be transcribed with Artificial Intelligence. However, there are a lot of considerations around the approach from both a performance and thread safety perspectives.
481-kamal-kitchen-sink
In this episode, we look at creating an entire infrastructure (proxy, load balancer, app servers, worker servers, database server, and a storage server) on our own hardware use Kamal to provision and deploy our Ruby on Rails application.
236-google-maps-api-with-stimulusjs
Add unobtrusive maps to your application using StimulusJS to tie in Google Maps Javascript API and Places API.
249-soft-delete-with-discard
Soft deletes for ActiveRecord done right.
408-broadcasting-progress-from-background-jobs
In a previous episode, we had created a custom ActionCable channel to assist in broadcasting updates from a background job. With the introduction of Turbo, we can simplify this process as we look at a few different approaches in displaying a progress bar with real time updates from background jobs.
427-detect-spam-with-ai
We can create a small python service that uses a Large Language Model (LLM) to detect if a message is spam or not. Using this service, we can tie it into our Rails application so that any comment created will be evaluated for being spam or not. We explore a few different routes on handling any messages flagged as spam.
477-kamal-2
In this episode we look at deploying a Rails 8 beta application to a Digital Ocean droplet. We'll also look at a scenario of deploying Action Cable broadcasts and another with recurring background jobs.
413-pdf-reader
When previewing PDF files that were uploaded through Active Storage, we can only get a simple image of the first page. In this episode, we'll look at taking the uploaded PDFs and interacting with them.
472-dependent-fields-with-hotwire
Large forms can be overwhelming to fill out, especially if not all of the fields are required. In this episode, we'll look at creating a stimulus controller to conditionally display fields based on the input of another field.
498-conditional-queue
In this episode we look at processing background jobs in a way that can conditionally send the work to be processed to different queues. This can be very powerful in situations where you need to process the job in different ways or send requests to different APIs.
205-push-notifications-with-actioncable
In this episode, we look into using Push Notifications within our Rails application and then using ActionCable to broadcast Push Notifications to the user.
231-syntax-highlighting-with-action-text
Set up Action Text with client side Syntax Highlighting using Highlight.js.
245-tracking-changes-on-action-text
Without using any gems, we look at tracking changes within Action Text. It seems like a simple thing, but challenges arise through several layers of abstraction due to the flexibility that Action Text provides.
417-system-tests
In this episode, we look at adding system tests in our application to test our Stimulus Controllers. We'll also look at how to DRY up some of the tests and how to run them in a headless environment.
468-processing-large-jobs
In this episode, we will upload a CSV file but need to pass it into a background job. This can prove to be difficult based on the hosting infrastructure so we'll explore some mechanisms to work around them. We'll also look to optimize Solid Queue to handle the large number of jobs.
494-outlets-and-permanent-tags
In this episode, we'll explore how we can add a "global" music player that will persist across different pages. Our approach will be unobtrusive and implemented in a maintainable way.
512-marksmith
Easily add Markdown support to your Rails applications with Marksmith. This isn't a drop-in replacement to ActionText, but can be used with text or blob columns. Marksmith integrates easily with ActiveStorage for handling file uploads. In this episode, we'll explore setting up Marksmith and some best practices.
521-model-context-protocol
Model Context Protocol (MCP) is an API interface for your applications that are formatted in a way that machine learning platforms can interact with them. They can be used to generate AI insights, perform tasks based on user input or other things.