Sha256: 814f8c900cb535b16c6cf2667f99141e68e9d6b2911975f54062c5cf3cd8575a

Contents?: true

Size: 1.29 KB

Versions: 9

Compression:

Stored size: 1.29 KB

Contents

class Species < ActiveRecord::Base
  set_primary_key :name
  
  scope :thoroughly_researched, :conditions => 'marginal_dietary_requirement IS NOT NULL'
  
  falls_back_on :diet_emission_intensity => lambda { weighted_average :diet_emission_intensity, :weighted_by => :population }, # kg CO2 / joule
                :marginal_dietary_requirement => lambda { (thoroughly_researched.map(&:weighted_diet_size).sum / thoroughly_researched.sum(:population) ) / thoroughly_researched.weighted_average(:weight, :weighted_by => :population)}, # joules
                :fixed_dietary_requirement => 0, # force a zero intercept to be respectful of our tiny tiny animal friends
                :weight => lambda { weighted_average :weight, :weighted_by => :population } # kg

  data_miner do
    tap "Brighter Planet's species data", Earth.taps_server
  end
  
  class << self
    def [](name)
      find_by_name name.to_s
    end
  end
  
  def diet_size
    return unless weight and marginal_dietary_requirement and fixed_dietary_requirement
    weight * marginal_dietary_requirement + fixed_dietary_requirement
  end
  
  def weighted_diet_size
    return unless _diet_size = diet_size and _population = population
    _diet_size * _population
  end
  
  def to_s
    name
  end
  
  def cat?
    eql? self.class[:cat]
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
earth-0.3.13 lib/earth/pet/species.rb
earth-0.3.11 lib/earth/pet/species.rb
earth-0.3.10 lib/earth/pet/species.rb
earth-0.3.9 lib/earth/pet/species.rb
earth-0.3.8 lib/earth/pet/species.rb
earth-0.3.7 lib/earth/pet/species.rb
earth-0.3.6 lib/earth/pet/species.rb
earth-0.3.5 lib/earth/pet/species.rb
earth-0.3.4 lib/earth/pet/species.rb