There are no reviews yet. Be the first to send feedback to the community and the maintainers!
042-fullcalendar
Learn how to incorporate FullCalendar into your Ruby on Rails application with listing and creating events. Using unobtrusive javascript, we can create a fast interactive calendar.template
Base template for "all" Drifting Ruby episodes186-nested-forms-from-scratch-with-stimulusjs
Using StimulusJS controllers, adding nested forms to a Rails application is easy and unobtrusive. In this episode, we look at an alternative way of creating nested forms without the Cocoon gem.051-rails-api-authentication-with-jwt
Using the knock gem, we will add JWT Authentication to our Rails API Application.275-hotwire
Hotwire is the newest magic which takes a different approach to building modern web applications without using much JavaScript.294-building-a-questionnaire
Using StimulusJS and nested forms, we create the first parts of a questionnaire. Dynamic surveys can be difficult to architect and maintain. In this episode, we take a simple approach to creating questionnaires.070-nested-forms-from-scratch
Learn how to handle multiple models in a single form with accepts_nested_attributes_for and learn how to add and remove nested records through JavaScript.154-service-objects-for-api-interactions-with-twilio
In this episode, learn how to extract the interactions with an external API into a service object so that code is isolated and interchangeable.029-infinite-scrolling
Infinite scrolling is now a common feature and there are several cases where it is really useful. For instance there are some websites where we simply canβt imagine a good pagination system, like Twitter or even Facebook.065-searchkick-and-elasticsearch
Add full text searching using Searchkick and Elasticsearch. Here I will show the steps involved in adding this search to an existing application and a sample of autocomplete functionality.191-inline-editing-records
Using Rails UJS, we create an interactive row editing solution without using any kind of Javascript frameworks.046-two-factor-authentication
Add multi factor authentication to your existing authentication solution. This gives your users the option to increase the level of security to their account and help prevent unauthorized access.082-datatables
The DataTables Javascript library creates a powerful display of your application's data. Some of the features include pagination, server side processing, sorting and search.067-decoding-and-interacting-with-barcodes
Using the QuaggaJS Library, learn how to scan and decode barcodes with your Ruby on Rails application. Using provided callbacks, interact with controller actions to provide a seamless experience.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.074-page-specific-javascript-in-ruby-on-rails
Sometimes you may find yourself with an application that has javascript that needs to execute only on a specific page. This episode lays the foundation to easily manage page specific javascript.317-error-tracking-from-scratch
In this episode, we look at creating a middleware to track errors to publish to another error "from scratch" error monitoring application.035-importing-and-exporting-csv-data
Basics on importing and exporting CSV Data using Ruby and without gems.033-progressive-render
Slow content got you down? Load it later! Use this gem to defer loading of portions of your page until after load. They will be fetched via AJAX and placed on the page when ready.258-github-actions
041-dry-up-your-javascript
Learn how avoid duplicate code to reuse existing javascript.094-recurring-events-on-full-calendar
Create recurring events and interact with them on FullCalendar.335-hotwire-modals
In this episode, we look at creating an unobtrusive and efficient way to launch Bootstrap modals using Turbo and Stimulus.071-nested-forms-with-cocoon
Using the unobtrusive gem, Cocoon, learn how to handle multiple models in a single form with accepts_nested_attributes_for.047-authorization-with-pundit
Prevent unauthorized access to your application with Pundit; an authorization library for Ruby on Rails which restricts what resources a given user is allowed to access.086-plotting-points-on-a-map-from-scratch
Using the Google Maps Javascript API, learn how to plot markers onto a map. Load markers and info windows through AJAX calls to your Rails JSON API.290-multiple-resources-with-devise
Sometimes we get into situations where our applications requires a different type of user account which wouldn't really fit into a role. So, in this episode we look at creating multiple resources for authentication with Devise.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.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.286-turbo-native-for-ios
In this episode, we look at modifying our Rails application and building a hybrid native application for iOS using Hotwire.002-Impressionist
A lightweight plugin that logs impressions per action or manually per model043-antivirus-uploads-with-clamby
Using ClamAV, scan files uploaded to your application for viruses. In the event of a virus learn how to gracefully handle the infected file and notify the user.201-working-with-large-data
When database tables get large, things can slow down significantly. In this episode, we look at a few things which helps keep databases performant and the client side responsive.085-working-with-subdomains
Learn to create a multi-tenant application where access to tenants are determined by the subdomain.092-restricting-access-by-ip-address
Learn to lock down your application or parts of your application by IP Addresses.326-dabbling-with-turbo
In this episode, we explore some of the new features with Turbo and interactions that we can do with little or no javascript.080-routing-partials
The routes file can grow to be unmaintainable and messy. Learn to keep things organized by extracting out blocks of routes into their own files.382-custom-turbo-stream-actions
With the release of Turbo 7.2, we gained the ability to create custom actions in Turbo. This allows us to trigger functions on the client side that would have been difficult or cumbersome to do in the past. In this episode, we look at setting up custom actions and how to use them.010-invisible-captcha
Part of a good User Experience is making your application easy to use for your users. However, a few bad apples often cause a hinderance to your UX/UI by the addition of Captchas. Learn how to create invisible captchas to protect your forms while delivering a good UX.050-rails-api-active-model-serializers
Using ActiveModel::Serializer, learn how to create the JSON responses for your Rails API application. ASM is a great object oriented approach to building a JSON API.061-periodic-tasks-with-sidekiq-cron
Using a third-party add-on, sidekiq-cron, we can create periodic tasks to extend the functionality of sidekiq.100-basic-testing-introduction-in-rails
Using the Rails 5.1.X defaults, we have a look at what is configured and explore the different types of tests; using the provided MiniTest and Capybara.027-WYSIWYG-with-Summernote
Integrate Summernote WYSIWYG Editor into your application. Learn how to use AJAX callbacks to filestore your images instead of database Base64.045-authentication-crash-course-with-devise
Devise is a flexible authentication solution for Rails based on Warden. Learn how to add a stable authentication solution like Devise to your application.307-hotwire-turbo-replacing-rails-ujs
In this episode, we look at some common functionality that we got with Rails UJS and what it looks like to reimplement these with Hotwire's Turbo and StimulusJS.103-sample-data-with-factory-bot-and-faker
Factory Bot is a fixtures replacement which can generate the needed records directly in the tests. Faker can be used to create fake data for these records.104-speeding-up-tests
Slow tests can slow down your development process. Using parallel_tests, you can speed up your test suite by multiple threads and running the tests in groups.378-stimulus-outlets-api
Outlets let you reference Stimulus controller instances and their controller element from within another Stimulus Controller by using CSS selectors. In this episode, we look at a simple example and then refactoring some older code where we used some workarounds to communicate with other stimulus controllers.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.028-WYSIWYG-with-Trix
Compose beautifully formatted text in your web application. Trix is a WYSIWYG editor for writing messages, comments, articles, and lists.039-action-cable-part-3-securing-your-websockets
Using authentication and authorization, lock down your ActionCable WebSockets so that messages are only sent and received to the intended users.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.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.158-grab-bag-of-ruby-and-ruby-on-rails-tricks
In this episode, we look at various tips and tricks.312-importmaps-in-rails-7
Import maps let you import JavaScript modules using logical names that map to versioned/digested files β directly from the browser. This will be a default in the upcoming Rails 7.149-rails-presenters
056-redis
Redis within a Ruby on Rails application has many benefits. Learn to interact with Redis Server and set it up for caching within your application.079-mountable-engines
Mountable Engines are a great way to extract code into its own namespace and allow the code to be reused in other applications. Other popular gems that are mountable engines are Devise and Doorkeeper.004-serialized-attributes
Store multiple attributes and values using a text column. Not for everyday use, but has situations where it can save on the number of columns and/or models needed to accomplish a task.032-client-side-validations
Give early warning to users of form errors before they submit. With client side validations, the user can correct any errors prior to submitting the form.076-javascript-select-form-fields-with-chosen
Chosen is a jQuery plugin that makes long, unwieldy select boxes much more user-friendly. Learn how to use Chosen in a few different ways in this episode; Rails form builder and Simple Form.066-managing-servers-with-ansible
A look into the Drifting Ruby network architecture and how I manage deployments with Ansible.123-encrypted-secrets-in-rails-52
162-creating-a-simple-slack-bot
Slack is a great application to keep in contact with friends, coworkers and a community. With bots, its capabilities are endless. In this episode, learn how to create a Slack Bot to interact with.083-autocomplete-with-html-results
Working with an autocomplete can be very simple. However, things get complicated when you try to use HTML markup in the displayed results. Learn how to use HTML markup within your autocomplete results!136-user-notifications
073-pagination-with-kaminari
When displaying a significant number of records, it is often a basic functions in a web application is to paginate the records and load them as requested.037-actioncable-part-1-configuration-and-basics
A walkthrough on configuring ActionCable with Rails 5. Learn how to configure your mount points and the basics of using ActionCable with your Rails application.422-embedding-stripe-checkout
223-like-relationships-and-global-id
In this episode we create a Like/Unlike system where users can like posts and use Global ID to obfuscate IDs.049-rails-api-basics
A brief introduction on Rails API. Learn how to create an API application and setup the routes. This episode is paving the way for more in depth looks into Rails API.016-complex-strong-params
Make your strong parameters do more by extracting the logic in order to maximize the ability and security of your application.003-actioncable-in-production
Taking a look at ActionCable and switching from Puma to Thin. On server reboot, spin up the ActionCable service.062-security-and-static-code-analyzers
Whether your preparing for a third-party security scan or already doing peer code reviews, you should always run brakeman scanner on your application to identify potential security vulnerabilities.052-rails-api-throttling-with-rack-attack
Save expensive calculation time using Rack::Attack, we will learn how to limit requests coming into our application. This gem not only limits requests, but can be used to blacklist or whitelist users as well.058-mail-previews-and-templates
Using ActionMailer::Preview preview email samples without sending them. Using Zurb's Foundation for Emails, learn how to use email templates with the Ink framework.099-creating-a-basic-ruby-gem
Gems are a packaged library of functions that can extend your application or provide other features to your system. Learn to create and publish a ruby gem.108-tracking-errors-with-sentry
Sentry is an Open Source error tracking that helps developers monitor and fix crashes in real time. Learn how to add and configure Sentry to your application.459-hotwire-combobox
075-drag-and-drop-with-interact-js
Using Interact.js to create draggable and droppable items in our view, we can use AJAX callbacks on events to interact with our Ruby on Rails application. Also, learn how to use Ruby Assets to manage our Javascript Libraries.044-capturing-signatures-with-signature-pad
Using the Javascript Library, Signature Pad, learn how to capture user signatures and store them within your Ruby on Rails application.005-florrick
This is a Rails library which integrates with Active Records and provides some awesome user-initiated string interpolations for your web apps. For example, have you ever needed to allow users to insert their own variables into e-mail templates or messages?096-auditing-with-paper-trail
Using the paper_trail gem, track changes to model records for auditing purposes and rollback changes when required.277-diving-into-hotwire
In this episode, we look at the installation scripts of Hotwire and get a better understanding of what they're doing in order to integrate it into our applications more efficiently.057-getting-started-ruby-on-rails-architectural-overview
For beginners, learn the basic structure of a Ruby on Rails application and the request lifecycle. Learn how different components of a Rails application interact with each other.436-turbo-8
431-hotkeys
059-background-jobs-with-sidekiq
Sidekiq is a Ruby Background Processor that manages its queue with a Redis service. Learn the basics of Sidekiq and integrating it with ActiveJob.055-charts-and-graphs
Learn how to use one of three charting libraries, Chart.js, Highcharts, or Google Charts, using the Chartkick gem to create simple and unobtrusive charts in your application.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.063-client-side-encryption
Add an extra level of security to your application with client side encryption. Even over an SSL connection, there are attacks which could expose your users' sensitive information. Using JSEncrypt, learn how to encrypt on the client side and decrypt on the server side.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.Love Open Source and this site? Check out how you can help us