Class: Wuclan::Models::UserScrapingMetrics

Inherits:
Object
  • Object
show all
Defined in:
lib/wuclan/metrics/user_scraping_metrics.rb

Overview

Workable kludge to denormalize records

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.new(id, *args) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'lib/wuclan/metrics/user_scraping_metrics.rb', line 53

def self.new id, *args
  if args.length == 1
    usm = super(id)
    usm.fill_from_bag *args
    usm
  else
    super id, *args
  end
end

Instance Method Details

#fill_from_bag(scrapings_bag) ⇒ Object

Instantiate from pig grouped output

user_scraping_metrics              3021 {(followers,20081228023148,2,2,0,0,0,0,0),(friends_ids,20090205064439,1,1,0,0,0,0,0),(followers_ids,20090205064439,1,1,0,0,0,0,0),(favorites,3021,1,1,0,0,0,0,0),(user,200902


41
42
43
44
45
46
47
48
49
50
51
# File 'lib/wuclan/metrics/user_scraping_metrics.rb', line 41

def fill_from_bag scrapings_bag
  scrapings_bag.split(/\),\(/).each do |scraping|
    scraping = scraping.gsub(/^[\{\(]+/,'').gsub(/[)}]+$/,'')
    context, *vals = scraping.split(",", 5)
    next unless USER_SCRAPING_CONTEXTS.include?(context.to_sym)
    [:scraped_at, :attempts, :successes, :failures].zip(vals).each do |attr, val|
      set context, attr, val
    end
  end
  self
end

#get(context, attr) ⇒ Object



32
33
34
# File 'lib/wuclan/metrics/user_scraping_metrics.rb', line 32

def get context, attr
  self.send("#{context}_#{attr}")
end

#set(context, attr, val) ⇒ Object



29
30
31
# File 'lib/wuclan/metrics/user_scraping_metrics.rb', line 29

def set context, attr, val
  self.send("#{context}_#{attr}=", val)
end