{"id":3194,"date":"2018-02-20T03:38:12","date_gmt":"2018-02-20T03:38:12","guid":{"rendered":"https:\/\/www.botreetechnologies.com\/blog\/?p=3194"},"modified":"2020-12-08T11:44:32","modified_gmt":"2020-12-08T06:14:32","slug":"job-scheduling-with-resque-in-ruby-on-rails","status":"publish","type":"post","link":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/","title":{"rendered":"Job Scheduling with Resque in Ruby on Rails"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">What is Job Scheduling?<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Job scheduling is the process of allocating system resources to many different tasks by an operating system (OS). System manages priorities of job queues and allocate CPU time. It should determine which job to be taken from which queue and the amount of time to be allocated for the job. Such scheduling makes sure that all jobs are carried out fairly and on time.<\/p><\/blockquote>\n\n\n\n<p>To solve the purpose of job scheduling, there are many tools and libraries are available like <a href=\"https:\/\/github.com\/javan\/whenever\" target=\"_blank\" rel=\"noopener noreferrer\">whenever<\/a>, <a href=\"https:\/\/github.com\/plashchynski\/crono\" target=\"_blank\" rel=\"noopener noreferrer\">crono<\/a>, <a href=\"https:\/\/github.com\/resque\/resque\" target=\"_blank\" rel=\"noopener noreferrer\">resque<\/a>, <a href=\"https:\/\/github.com\/jmettraux\/rufus-scheduler\" target=\"_blank\" rel=\"noopener noreferrer\">rufus<\/a> and many more. Today we are going to understand one of them which is widely used and has a variety of options for configurations and customizations which is <code>Resque<\/code>.<\/p>\n\n\n\n<p><code>Resque<\/code> is a Redis-backed library for creating background jobs, placing those jobs on multiple queues, and processing them later.<\/p>\n\n\n\n<p><code><a href=\"https:\/\/github.com\/resque\/resque-scheduler\" target=\"_blank\" rel=\"noopener noreferrer\"><i>Resque-scheduler<\/i><\/a><\/code> is an extension to <code>Resque<\/code> that adds support for queueing items in the future?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Setup Redis.<\/h3>\n\n\n\n<p>Before starting this tutorial, You&#8217;ll need redis to be installed on your machine. To install redis go through <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-install-and-use-redis\" target=\"_blank\" rel=\"noopener noreferrer\">this link<\/a> and follow all mentioned steps there.<\/p>\n\n\n\n<p>You can use below command to start redis server once you install it properly:<\/p>\n\n\n\n<p><code>$ redis-server<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Setup Resque and Resque-scheduler.<\/h3>\n\n\n\n<p>Create a Rails application first and add these two gems to your <b>Gemfile<\/b>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">gem 'resque'\ngem 'resque-scheduler'\n<\/pre>\n\n\n\n<p>Then do bundle install.<\/p>\n\n\n\n<p><code>$ bundle install<b><\/b><\/code><\/p>\n\n\n\n<p>Now start your application:<\/p>\n\n\n\n<p><code>$ rails s<b><\/b><\/code><\/p>\n\n\n\n<p>Now, you can create your resque jobs from within your application. A <b>Resque job<\/b> is nothing but a Ruby class or module with a <code>perform<\/code> class method.<\/p>\n\n\n\n<p>A good practice is to create app\/jobs folder and store your job classes there.<\/p>\n\n\n\n<p>Create a file named <code><b>sleeper.rb<\/b><\/code> under your <code><b>app\/jobs<\/b><\/code> folder.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">class Sleeper\n  @queue = :sleep\n  def self.perform(seconds)\n    puts \"Sleep...&gt;&gt; #{Time.now}\"\n  end\nend\n<\/pre>\n\n\n\n<p>Here, The <code>@queue<\/code> class instance variable determines which queue Sleeper jobs will be placed in. To place a Sleeper job on the sleep queue, we can write like,<\/p>\n\n\n\n<p><code><b><\/b>Resque.enqueue(Sleeper)<\/code><\/p>\n\n\n\n<p>The schedule file is a list of Resque job classes with arguments and a schedule frequency. The schedule is just a hash, but is usually stored in a <code>YAML<\/code> as shown below.<\/p>\n\n\n\n<p>Define job schedules in <code><b>\/config\/resque_schedule.yml:<\/b><\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sleep:\n  every: 30s\n  class: Sleeper\n  args:\n  queue: high\n  description: Runs the perform method in Sleeper\n<\/pre>\n\n\n\n<p><i><b>Note:<\/b> args is blank here. Reason behind this is that the worker class needs no argument here in its perform method. If you need to pass an argument to perform method then specify it here.<\/i><\/p>\n\n\n\n<p>Now, to make this scheduler run through rake task, follow the below step.<\/p>\n\n\n\n<p>Create a file <code><b>lib\/tasks\/resque.rake<\/b><\/code> and add the following code.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">require 'resque\/tasks'\nrequire 'resque_scheduler\/tasks'\n\ntask \"resque:setup\" =&gt; :environment do\n  \n  Resque.schedule = YAML.load_file(\n  \"#{Rails.root}\/config\/resque_schedule.yml\"\n  )\n  ENV['QUEUES'] = 'default,sleep,wake_up,run'\n\nend\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Accessing Resque from browser.<\/h4>\n\n\n\n<p>Include below to your <code><b>config\/routes.rb<\/b><\/code> and mount the application like this:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">require 'resque\/server'\n\nRails.Application.routes.draw do\n  mount Resque::Server.new, at: \"\/resque\"\nend\n<\/pre>\n\n\n\n<p>Then restart your Rails server. Open up <code><b>http:\/\/localhost:3000\/resque<\/b><\/code> in a browser to check out the web running jobs and schedules.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"713\" height=\"398\" src=\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/12\/Overview.png\" alt=\"Overview\" class=\"wp-image-13792\" srcset=\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/12\/Overview.png 713w, https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/12\/Overview-300x167.png 300w\" sizes=\"auto, (max-width: 713px) 100vw, 713px\" \/><\/figure><\/div>\n\n\n\n<p>If you are using <code>Resque-scheduler<\/code> then it will add more options for you in the resque-web UI. Those options allows you to view queues and manually start queuing. Other option is for viewing pending jobs in the delayed queues.<\/p>\n\n\n\n<p>To achieve this, add below lines to your <code><b>routes.rb<\/b><\/code> file:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">require 'resque\/scheduler'\nrequire 'resque\/scheduler\/server'\n<\/pre>\n\n\n\n<p>Again, restart server, and refresh the browser page.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"249\" src=\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/12\/schedule.png\" alt=\"Adding resque-scheduler to a Rails projects\" class=\"wp-image-13794\" srcset=\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/12\/schedule.png 800w, https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/12\/schedule-300x93.png 300w, https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/12\/schedule-768x239.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p>To start the scheduler:<\/p>\n\n\n\n<p><code><b><\/b>$ rake resque:scheduler<\/code><\/p>\n\n\n\n<p>You can get a working example <a href=\"https:\/\/github.com\/NaiyaShah-BTC\/resque_poc\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>.<\/p>\n\n\n\n<p>That&#8217;s it! In my next article, we will pick one more job scheduling library and will look into it.<\/p>\n\n\n\n<p>Have a happy queuing!<\/p>\n\n\n\n<p><strong><a href=\"https:\/\/www.botreetechnologies.com\/ruby-on-rails-development\">Click here for more details<\/a>&#8230;<\/strong><\/p>\n\n\n\n<p>At <a href=\"https:\/\/www.botreetechnologies.com\/\">BoTree Technologies<\/a>, we build enterprise applications with our RoR team of 25+ engineers.<\/p>\n\n\n\n<p>We also specialize in RPA, AI, Python, Django, JavaScript and ReactJS.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/www.botreetechnologies.com\/contact\">Consulting is free<\/a> &#8211; let us help you grow!<\/h3>\n","protected":false},"excerpt":{"rendered":"<p>What is Job Scheduling? Job scheduling is the process of&#8230;<\/p>\n","protected":false},"author":24,"featured_media":13791,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[73,10],"tags":[],"class_list":["post-3194","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ruby-on-rails","category-technology"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Job Scheduling with Resque in Ruby on Rails<\/title>\n<meta name=\"description\" content=\"Learn more about job scheduling with resque in ruby on rails. Contact us to build web and mobile app to add value to business.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Job Scheduling with Resque in Ruby on Rails\" \/>\n<meta property=\"og:description\" content=\"Learn more about job scheduling with resque in ruby on rails. Contact us to build web and mobile app to add value to business.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/\" \/>\n<meta property=\"og:site_name\" content=\"BoTree Technologies\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/BoTreeTechnologies\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-02-20T03:38:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-08T06:14:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2018\/02\/resque-in-ruby-on-rails.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"683\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Naiya Shah\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@BoTreeTech\" \/>\n<meta name=\"twitter:site\" content=\"@BoTreeTech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Naiya Shah\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/\"},\"author\":{\"name\":\"Naiya Shah\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/68f8340395086b417feb15b21211bf8c\"},\"headline\":\"Job Scheduling with Resque in Ruby on Rails\",\"datePublished\":\"2018-02-20T03:38:12+00:00\",\"dateModified\":\"2020-12-08T06:14:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/\"},\"wordCount\":550,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2018\/02\/resque-in-ruby-on-rails.jpg\",\"articleSection\":[\"Ruby on Rails\",\"Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/\",\"url\":\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/\",\"name\":\"Job Scheduling with Resque in Ruby on Rails\",\"isPartOf\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2018\/02\/resque-in-ruby-on-rails.jpg\",\"datePublished\":\"2018-02-20T03:38:12+00:00\",\"dateModified\":\"2020-12-08T06:14:32+00:00\",\"author\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/68f8340395086b417feb15b21211bf8c\"},\"description\":\"Learn more about job scheduling with resque in ruby on rails. Contact us to build web and mobile app to add value to business.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#primaryimage\",\"url\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2018\/02\/resque-in-ruby-on-rails.jpg\",\"contentUrl\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2018\/02\/resque-in-ruby-on-rails.jpg\",\"width\":1024,\"height\":683,\"caption\":\"scheduler with resque in ruby on rails\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.botreetechnologies.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Job Scheduling with Resque in Ruby on Rails\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#website\",\"url\":\"https:\/\/www.botreetechnologies.com\/blog\/\",\"name\":\"BoTree Technologies\",\"description\":\"Committed to inspire generation.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.botreetechnologies.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/68f8340395086b417feb15b21211bf8c\",\"name\":\"Naiya Shah\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/naiya-shah-150x150.png\",\"url\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/naiya-shah-150x150.png\",\"contentUrl\":\"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/naiya-shah-150x150.png\",\"caption\":\"Naiya Shah\"},\"description\":\"Naiya is a Ruby on Rails Developer. She developes applications with optimization and clean code with full Rspec coverage. She works in Javascript as well and she digs into anything new really quickly and comes up with a solution. Her leisure activities include travelling and watching movies.\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Job Scheduling with Resque in Ruby on Rails","description":"Learn more about job scheduling with resque in ruby on rails. Contact us to build web and mobile app to add value to business.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/","og_locale":"en_US","og_type":"article","og_title":"Job Scheduling with Resque in Ruby on Rails","og_description":"Learn more about job scheduling with resque in ruby on rails. Contact us to build web and mobile app to add value to business.","og_url":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/","og_site_name":"BoTree Technologies","article_publisher":"https:\/\/www.facebook.com\/BoTreeTechnologies\/","article_published_time":"2018-02-20T03:38:12+00:00","article_modified_time":"2020-12-08T06:14:32+00:00","og_image":[{"width":1024,"height":683,"url":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2018\/02\/resque-in-ruby-on-rails.jpg","type":"image\/jpeg"}],"author":"Naiya Shah","twitter_card":"summary_large_image","twitter_creator":"@BoTreeTech","twitter_site":"@BoTreeTech","twitter_misc":{"Written by":"Naiya Shah","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#article","isPartOf":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/"},"author":{"name":"Naiya Shah","@id":"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/68f8340395086b417feb15b21211bf8c"},"headline":"Job Scheduling with Resque in Ruby on Rails","datePublished":"2018-02-20T03:38:12+00:00","dateModified":"2020-12-08T06:14:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/"},"wordCount":550,"commentCount":0,"image":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#primaryimage"},"thumbnailUrl":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2018\/02\/resque-in-ruby-on-rails.jpg","articleSection":["Ruby on Rails","Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/","url":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/","name":"Job Scheduling with Resque in Ruby on Rails","isPartOf":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#primaryimage"},"image":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#primaryimage"},"thumbnailUrl":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2018\/02\/resque-in-ruby-on-rails.jpg","datePublished":"2018-02-20T03:38:12+00:00","dateModified":"2020-12-08T06:14:32+00:00","author":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/68f8340395086b417feb15b21211bf8c"},"description":"Learn more about job scheduling with resque in ruby on rails. Contact us to build web and mobile app to add value to business.","breadcrumb":{"@id":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#primaryimage","url":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2018\/02\/resque-in-ruby-on-rails.jpg","contentUrl":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2018\/02\/resque-in-ruby-on-rails.jpg","width":1024,"height":683,"caption":"scheduler with resque in ruby on rails"},{"@type":"BreadcrumbList","@id":"https:\/\/www.botreetechnologies.com\/blog\/job-scheduling-with-resque-in-ruby-on-rails\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.botreetechnologies.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Job Scheduling with Resque in Ruby on Rails"}]},{"@type":"WebSite","@id":"https:\/\/www.botreetechnologies.com\/blog\/#website","url":"https:\/\/www.botreetechnologies.com\/blog\/","name":"BoTree Technologies","description":"Committed to inspire generation.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.botreetechnologies.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.botreetechnologies.com\/blog\/#\/schema\/person\/68f8340395086b417feb15b21211bf8c","name":"Naiya Shah","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/naiya-shah-150x150.png","url":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/naiya-shah-150x150.png","contentUrl":"https:\/\/www.botreetechnologies.com\/blog\/wp-content\/uploads\/2020\/10\/naiya-shah-150x150.png","caption":"Naiya Shah"},"description":"Naiya is a Ruby on Rails Developer. She developes applications with optimization and clean code with full Rspec coverage. She works in Javascript as well and she digs into anything new really quickly and comes up with a solution. Her leisure activities include travelling and watching movies."}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/3194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/comments?post=3194"}],"version-history":[{"count":1,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/3194\/revisions"}],"predecessor-version":[{"id":13795,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/3194\/revisions\/13795"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/media\/13791"}],"wp:attachment":[{"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/media?parent=3194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/categories?post=3194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.botreetechnologies.com\/blog\/wp-json\/wp\/v2\/tags?post=3194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}