У меня есть этот код, чтобы скрести сайт рейтинга http://example.com/
из Alexa
В lib/recurring.rb
я естьRails: как отображать данные, полученные из фоновой задачи на главном экране?
module Recurring
class MyTask
include Delayed::RecurringJob
run_every 1.day
run_at '12:00pm'
timezone 'UTC'
def perform
url = "http://alexa.com/siteinfo/example.com"
doc = Nokogiri::HTML(open(url))
@rank = doc.at_css("strong.metrics-data.align-vmiddle").text
end
end
end
У меня есть raketask, чтобы выполнить это в lib/tasks/my_task.rake
namespace :recurring do
desc "Get website rank everyday at 12:00 OM UTC"
task init: :environment do
#Delete any previously-scheduled recurring jobs
Delayed::Job.where('(handler LIKE ?)', '--- !ruby/object:Recurring::%').destroy_all
Recurring::MyTask.schedule!
end
end
когда я бегу
$ rake recurring:init
Задача выполнена каждый день t 12:00 utc, и у меня есть рейтинг сайта в @rank
(номер строки 10 recurring.rb
).
Но как я могу отображать эти данные на своей индексной странице? Я новичок в обработке фона. Любая помощь очень ценится.
Ваш вопрос не ясен. Как только вы сохраните эту информацию о ранге в db, она будет автоматически отражаться в ваших представлениях. Таким образом, проблема заключается в том, что вы не сохраняете данные в db или не знаете, как отображать их в представлении, и что это такое? –
@Joel_Blum Я не сохраняю '@ rank' в db. есть ли способ, которым я могу заставить его diplayed без участия db –
, вероятно, нет разумного выбора, но, экономя его до db, почему бы вам не захотеть задействовать db? –