[英]How to display output from rake task to the browser?
我有這個rake文件,它從網站上抓取數據。 在此腳本抓取數據時,我正在使用rake-progressbar gem跟蹤其進度。 但是,現在,只有在終端中運行rake文件並輸入以下內容,我才能看到進度:輸入“ rake testing2”。
我現在想要的是當我單擊觸發rake文件的鏈接時能夠在瀏覽器中查看進度。
這是我的主視圖,其中包含觸發rake文件(testing2.rake)的鏈接:
<div>
<p>Find me in app/views/home/index.html.erb</p>
<h3>Scrape data:</h3>
<%= link_to "Scrape",:action => 'scrape' %>
</div>
這是我的家庭控制器:
class HomeController < ApplicationController
def index
end
def scrape
%x[rake testing2]
redirect_to root_url
end
end
這是我的rake文件(testing2.rake),其中包含用於刮取數據的代碼以及進度條的代碼:
require 'mechanize'
require 'date'
require 'json'
require 'rake-progressbar'
task :testing2 => [:environment] do
agent = Mechanize.new
last_page_number = 1
for pg_number in 1..last_page_number do
puts "Scrapping..."
page = agent.get("https://www.congress.gov/members?page=#{pg_number}")
page_links = page.links_with(href: %r{.*/member/\w+})
page_links_size = page_links.size
member_links = page_links
bar = RakeProgressbar.new(100)
members = member_links.map do |link|
member = link.click
name = member.search('title').text.split('|')[0]
institution = member.search('td~ td+ td').text.split(':')[0]
stripActivities = activities.reject { |x| x.length == 1 }
{
name: name.strip,
institution: institution.strip
}
bar.inc
end
bar.finished
end
end
下面是終端中的輸出,進度條顯示:
那么,如何在瀏覽器上顯示此進度?
您可以將進度存儲在數據庫中,並在瀏覽器頁面中顯示。
刪除rake任務,並在用戶單擊鏈接時以ActiveJob
運行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.