Heroku provides a robust platform for developers to deploy, manage, and scale applications. When working with Ruby on Rails projects, scheduling jobs can be an integral part of your application's architecture. Cron To Go, an Heroku add-on, makes this process seamless, allowing you to schedule tasks in a way similar to cron. In this blog post, we'll walk you through the process of scheduling a Ruby on Rails job on Heroku using Cron To Go.
Step 1: Clone the Demo Repository
First, you'll need a Ruby on Rails application to work with. We'll be using a minimalistic example that you can clone from our demo repository. Here's the link to the repository.
Simply clone the repository to your local machine to get started:
git clone https://github.com/crazyantlabs/crontogo-rails-example.git
cd crontogo-rails-example
Step 2: Install Heroku CLI and Cron To Go Plugin
Before proceeding, make sure that you have the Heroku CLI installed and configured. If you don't have it, follow the link provided here to get it set up.
Once you have the Heroku CLI installed, you will need to install the Cron To Go plugin. This is essential for scheduling the jobs:
heroku plugins:install cron-to-go
Step 3: Deploy the Rails Application to Heroku
Next, deploy your Ruby on Rails application to Heroku by creating an app and pushing the code to it:
heroku create
git push --set-upstream heroku main
Your application should now be live on Heroku.
Step 4: Attach Cron To Go to Your Heroku App
With your application deployed, it's time to add Cron To Go to your Heroku app. This will allow you to schedule jobs as needed:
heroku addons:create crontogo:free-trial
Step 5: Schedule Jobs with Cron To Go
Your repository contains a manifest.yaml
file that defines cron jobs. You can also create jobs using the CLI or the Cron To Go dashboard.
In the manifest file, you can see a job named 'Daily data update' that runs a rake task to update your database daily at midnight UTC.
version: 1
jobs:
- name: 'Daily data update'
command: 'rake db:update'
schedule: '0 0 * * *'
timezone: 'UTC'
description: 'This job updates the database daily at midnight UTC.'
To schedule this job, use the Cron To Go CLI plugin:
heroku cron:jobs:import manifest.yaml
Your job is now scheduled! You can verify your scheduled jobs by running:
heroku cron:jobs
Optional: Manually Manage Jobs
Apart from using a YAML file, you can manually add or edit jobs through the Cron To Go dashboard. You can also monitor your jobs, view their run history, and troubleshoot any encountered issues. To open Cron To Go's dashboard from the CLI:
heroku addons:open crontogo
You can even run your job manually through the dashboard by clicking on the job menu button and selecting “Run job now.”
Conclusion
Scheduling Ruby on Rails jobs on Heroku using Cron To Go is a straightforward process that brings automation and efficiency to your applications. By following the steps outlined in this blog post, you can schedule recurring tasks that suit your needs.
If you found this guide helpful, feel free to share it with fellow developers and leave your thoughts in the comments section. For more tutorials and insights, consider subscribing to our channel or following our blog. Happy coding!