簡體   English   中英

如何顯示rake任務到瀏覽器的輸出?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM