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.
A few of the Open Source projects we do at GoRails.
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.
Noticed is my new gem for adding notifications to Rails apps. Notifications are really complicated to build and we've done the heavy lifting for you.
Translating and localizing your app is important to make it accessible to users around the world. Rails provides internationalization (I18n) tools to make this easier and it's got a lot of cool tricks available.
User mentions in group chat is a crucial feature, so this week we're taking a look at how to add @ mentions for our users in chat with regex and more.
It's important to see that there are unread messages in channels you're not actively viewing. We can use a very simple event in ActionCable to do this and bold channel names with unread messages.
One fantastic way to improve Rails performance is by using Etags to help the browser keep track if a page has changed or not. This can help Rails skip rendering views entirely and save lots of time.
Contribute to Rails by discovering something you could improve and learning how to add features to Rails
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.
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.
Add code coverage to your app using SimpleCov and RailsBytes. We'll walk through installing simplecov and creating a RailsByte to automate it for us going forward.
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.
Using the Intersection Observer API, we can refactor our infinite scroll example to be much more efficient and simpler to use
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.
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
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.
Adding Infinite Scroll to your Rails app is easy with Stimulus.js, Turbolinks, and Pagy
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
Sometimes you might want to keep track of all classes a module was included in. We can do that with a couple nifty tricks to make this work with both regular Ruby modules and Rails concerns.
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.
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.
Join 86,946+ developers who get early access to new tutorials, screencasts, articles, and more.
We care about the protection of your data. Read our Privacy Policy.