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.
Debugging Ruby with the Caller method
In this video, we will explore how the concepts we looked at in "Flattening Scopes in Ruby" are used in Rails by taking a look at the assert_difference method. We will walk through how the method works while taking note of where the concepts are applied.
Today we're refactoring Andrew Mason's GitHub Action that runs Rubocop against your repository. We'll pull out some concepts, remove conditionals, and use several other techniques to clean up the code.
We look at using the built in SimpleDelegator class to easily create decorators for objects.
How do we test API requests in a Rubygem to make sure that we're integrating correctly with our backend? We'll learn how to use stubs to fake out the request and test our code without any network requests.
The core of any API wrapper is the actions for create, read, update, and delete. We'll implement the CRUD for a resource so you can see how to do it and wire up everything together that we've built so far.
The core of an API wrapper Rubygem is defining the Resource endpoints so developers can make requests cleanly. We'll also learn how to handle pagination for endpoints that return a list of results.
When you receive a JSON response from an API endpoint, it's really easy to convert this to a Ruby hash. But hashes don't feel very Ruby-ish when you're working with them and you can't add methods and treat them like objects.
Rubygems.org released a new feature called Trusted Publishing which allows you to release gems directly from GitHub Actions without requiring 2FA or long-lived API tokens. Let's see how it works!
In this lesson, we will be learning how to use strace to watch our system calls which we can then use to help debug issues further.
Techniques for installing Ruby and managing different versions between applications
Learn how to refactor your Rails model callbacks into plain old ruby objects that help organize your code
Learn how to set up GitHub Actions to run Continuous Integration (CI) with Ruby on Rails
See how different approaches can affect the code you write using FizzBuzz as an example
Bootstrap 4 was just announced and you can start using it today in your Rails app
In this video, we will be looking at how to better debug issues in our programs and applications by leveraging the Ruby Debug gem.
In this lesson, we'll create a job to download a video, extract the audio with ffmpeg, transcribe the video with Whisper, and upload the captions to our hosting provider.
Whisper.cpp is an open source C/C++ port of OpenAI Whisper that we can use with Ruby for transcribing our videos. We'll also look at how ActiveStorage runs executables like ffmpeg to see how it works behind the scenes just like with what we're building.
Config options sometimes need to support dynamic values and not just simple booleans. In this lesson, we'll discover a config in Devise, explore how we can hack around it, and then make a Pull Request to improve this feature in Devise instead.
If you're building something with shared functionality, extracting a base class can be helpful to create a shared place each class can inherit from. We'll explore how to do this for our API clients and one of the tricky things about accessing constants.
Join 82,969+ developers who get early access to new tutorials, screencasts, articles, and more.
We care about the protection of your data. Read our Privacy Policy.