class MonkeyMusic::Track

Attributes

metadata[RW]

Public Class Methods

from_user(user) click to toggle source
# File lib/monkey_music/units/track.rb, line 9
def self.from_user(user)
  track = Track.new
  track.metadata = if @tier
    user.recommend!(@tier) || user.recommendations.sample
  else
    user.recommendations.sample
  end
  track
end
tier(n) click to toggle source
# File lib/monkey_music/units/track.rb, line 5
def self.tier(n)
  Class.new Track do @tier = n end
end

Public Instance Methods

method_missing(method, *args, &block) click to toggle source

Delegate to metadata

# File lib/monkey_music/units/track.rb, line 20
def method_missing(method, *args, &block)    
  if @metadata.respond_to?(method)
    @metadata.send(method, *args, &block)
  else
    raise NoMethodError  
  end    
end
serialize() click to toggle source
# File lib/monkey_music/units/track.rb, line 28
def serialize
  @metadata.uri
end
to_json(options = {}) click to toggle source
# File lib/monkey_music/units/track.rb, line 32
def to_json(options = {})
  { :id => @id,
    :x => @x,
    :y => @y,
    :type => self.class.name.split('::').last,
    :name => @metadata.name,
    :tier => @metadata.tier,
    :value => @metadata.value,
  }.to_json
end