How to build a complete, real-world application from scratch with Ruby on Rails step by step.
A lot of Ruby code is "magic". We'll explain the magic and see how it works using the powerful tools Ruby gives us.
Accept subscription and one-time payments with Stripe in your Rails apps
Expert advice on keeping Rails apps organized and fast.
Cheap, easy hosting for Ruby and Rails apps.
Launch your product business way faster with our SaaS template.
A weekly podcast on web development and building products with Ruby, Rails, Javascript, and more.
Build a Ruby on Rails app in 48 hours with us.
Help Junior developers get hired by sharing small projects to build their resume with paid work.
Find your next Ruby on Rails Job.
Don't like Cocoon or it's jQuery dependency? We can use Stimulus JS and build dynamic nested forms in Rails with accepts_nested_attributes_for from scratch pretty easily!
Mentioning Users with an @mention is a super common feature. Trix and ActionText are now part of Rails 6 which means we can very easily add support for tagging users with @mentions and other custom attachments in your applications.
Rails 6 defaults to using Webpacker for Javascript instead of the asset pipeline. We'll learn how everything is structured and laid out and see how to add Flatpickr to Rails 6 including both the Javascript and CSS for it.
With TailwindCSS 1.0 just around the corner and some changes in Rails 6 to Webpacker, we take a look at how to install and setup the latest version of TailwindCSS with Rails 6.0
CSS frameworks like Tailwind, Bootstrap, Foundation, etc all come with many CSS classes you probably aren't using. This creates huge CSS files unless we use a tool like PurgeCSS to look through our code and remove the unused classes.
Rails's webpacker gem makes it super easy to load both Bootstrap's CSS and JS into your Rails app using webpack
Learn how to implement Uppy as a frontend for uploading files via drag and drop, paste, URL, Google Drive, Dropbox, webcam and more to Active Storage in Rails
Learn how to implement Google Maps and the Google Places Autocomplete API in Rails compatible with Turbolinks using StimulusJS
Webpacker provides some nice tools for loading Javascript in several different ways. We're looking at require.context to see how to load an entire directory's set of files easily.
Stimulus Reflex is one of the coolest new libraries out there. It can update the browser in realtime and allow you to build reactive applications without any Javascript. It's awesome.
Drag and drop sortable lists in Rails aren't too hard using Sortablejs and Stimulus to make wire them up to our backend with acts_as_list
Adding Infinite Scroll to your Rails app is easy with Stimulus.js, Turbolinks, and Pagy
Scroll events in Javascript can happen quickly. We want to make sure we don't request the same page multiple times which we can solve easily by introducing a little throttling.
An updated version of our Group Chat series using Webpacker, ActionCable, Stimulus.js, and modern Javascript to build a very clean version of realtime group chat in Rails
Learn how to use Cable Ready to perform realtime browser updates using actions generated in Rails controllers, models, and background jobs. Cable Ready is the magic behind Stimulus Reflex.
Using the Intersection Observer API, we can refactor our infinite scroll example to be much more efficient and simpler to use
Using Vonage (previously known as OpenTok), we can add multiuser live video chat to Rails in just 20 minutes. It also supports broadcasting things like webinars, recording videos, and more.
Keeping track of a user's last read timestamp for each chat room is straightforward, especially when we use Stimulus.js to update it from the client side.
Webpack bundles can be confusing as to what actually ships in production. Using the bundle analyzer plugin, we can visualize and see exactly what libraries and files are taking up what space.
Join 82,464+ developers who get early access to new tutorials, screencasts, articles, and more.
We care about the protection of your data. Read our Privacy Policy.