class HighPageviews
Public Class Methods
from_among(articles, min_views: 300)
click to toggle source
# File lib/wikipedia_twitterbot/high_pageviews.rb, line 4 def self.from_among(articles, min_views: 300) average_views = {} articles.each_slice(50) do |fifty_articles| threads = fifty_articles.each_with_index.map do |article, i| Thread.new(i) do title = article.title.tr(' ', '_') average_views[article.id] = WikiPageviews.average_views_for_article(title) end end threads.each(&:join) end timestamp = Time.now.utc update_average_views(articles, average_views, timestamp) articles.reject! { |article| article.average_views.nil? } articles.select! { |article| article.average_views > min_views } articles end
update_average_views(articles, average_views, average_views_updated_at)
click to toggle source
# File lib/wikipedia_twitterbot/high_pageviews.rb, line 24 def self.update_average_views(articles, average_views, average_views_updated_at) articles.each do |article| article.average_views_updated_at = average_views_updated_at article.average_views = average_views[article.id] end end