class TrumpcareTracker::RakeTask

Base rake task class

Public Instance Methods

audit_rep(i, rep, &block) click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 59
def audit_rep(i, rep, &block)
  puts "Sending requests to Twitter API for #{rep.official_full}"
  rep_handles = handles.detect do |handle|
    handle['official'].downcase.strip == rep.twitter.downcase.strip
  end

  alt_screen_name = if rep_handles
    rep_handles['personal/campaign']
  end

  tracker = TrumpcareTracker.new(rep.official_full, rep.twitter, alt_screen_name)
  start_time = Time.now
  tracker.audit
  duration = (Time.now - start_time).round(2)
  puts tracker.to_s
  block.call(tracker, rep) if block_given?

  puts "#{i + 1} down. Out of #{tracker.timeline.length} tweets checked,\n"\
    "#{tracker.recent_tweets.length} were made in the last 7 days.\n"\
    "The oldest tweet analyzed was created #{tracker.recent_tweets.last&.created_at&.strftime("%H:%M:%S %-m/%-d/%y")}\n"\
    "#{tracker.requests} requests took #{duration} seconds."
rescue Twitter::Error::TooManyRequests
  puts 'Rate limit exceeded, waiting 5 minutes'
  sleep(300)
  audit_rep(i, rep, &block)
rescue Twitter::Error => e
  puts e.message
  audit_rep(i, rep, &block)
end
audit_tweets(reps, &block) click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 89
def audit_tweets(reps, &block)
  reps.each_with_index do |rep, i|
    next if rep.twitter.nil?
    audit_rep(i, rep, &block)
  end
ensure
  `say "beep beep beep beep beep"`
end
democrats(chamber = '') click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 12
def democrats(chamber = '')
  chamber = chamber.to_s

  democrats = PYR.reps do |r|
    r.democrat = true
    r.chamber  = chamber unless chamber.empty?
  end

  independents = PYR.reps do |r|
    r.independent = true
    r.chamber     = chamber unless chamber.empty?
  end

  democrats.objects.to_a + independents.objects.to_a
end
handles() click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 55
def handles
  @_handles ||= CSV.read(File.expand_path('../twitter_handles.csv', __FILE__), headers: true)
end
house_democrats() click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 32
def house_democrats
  democrats('lower')
end
house_republicans() click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 51
def house_republicans
  republicans('lower')
end
mentions_mapper(doc, regex) click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 98
def mentions_mapper(doc, regex)
  doc.text.split("\n").select { |string| string.downcase.match?(regex) }
end
republicans(chamber = '') click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 36
def republicans(chamber = '')
  chamber = chamber.to_s

  republicans = PYR.reps do |r|
    r.republican = true
    r.chamber = chamber unless chamber.empty?
  end

  republicans.objects
end
senate_democrats() click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 28
def senate_democrats
  democrats('upper')
end
senate_republicans() click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 47
def senate_republicans
  republicans('upper')
end