require 'active_record' require 'active_support/core_ext/numeric/time' require 'active_support/core_ext/date/calculations' module Tjcrawler class Page < ActiveRecord::Base @@semaphore = Mutex.new class << self def enqueue url @@semaphore.synchronize{Page.find_or_create_by url: url} end def dequeue Page.where('crawled_at IS NULL OR crawled_at < ?', 1.day.ago).order('crawled_at IS NOT NULL, crawled_at').first end end end end