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.
Adding delivery methods for notifications with Noticed is pretty easy. Today we'll look at using Bluesky's API to deliver notifications as posts on our feed.
Captchas help prevent bots from spamming your Rails applications so today we're implementing Cloudflare's Turnstile captchas.
Next, we need to sync videos using our API client which we'll do with a higher level abstraction to integrate with the API.
Next up, we need to sync videos from our hosting provider's API so we'll build an API client from scratch using net/http in Ruby
In this episode we will look at how to make and use custom Rails generators to create new API clients.
In this episode we will look at how to use Webmock to test our API Clients.
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.
In this episode we will look at using Ruby's built-in Net::HTTP class to build API clients for making http requests.
Integrating with GitHub Apps in your Rails app can seem daunting. It's a bit more complicated than just redirecting to OAuth and receiving an access token. In this episode, we'll look at a basic GitHub app integration we used for the Rails Hackathon
hCaptcha is a method to try detecting bots on your website. This episode, we'll walk through how to implement hCaptcha in a way that's compatible with Turbo using Stimulus.js and
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.
Testing integrations with external APIs in your Rails app can be hard. You don't know what requests are being made (or even the responses), so how can you properly mock them out? VCR to the rescue.
WebMock is a fantastic way to stub out and mock your HTTP requests. It will actually throw an exception in your test suite when an HTTP request is made so that you know when you're hitting an external API that you haven't stubbed out correctly.
Reply to inbound SMS and phone calls using TwiML to create XML responses to Twilio conversations
Receiving inbound SMS in Rails with Twilio is very similar to handling inbound emails with Action Mailbox
Learn how to implement a Slack Slash Command App in Rails using webhooks
Learn how to build a React Native application to connect to your Rails API using OAuth for authentication
Join 86,796+ developers who get early access to new tutorials, screencasts, articles, and more.
We care about the protection of your data. Read our Privacy Policy.