class Gamifier::DSL::Site
Attributes
behaviors[R]
missions[R]
rewards[R]
source[R]
tracks[R]
units[R]
Public Class Methods
new(*args)
click to toggle source
# File lib/gamifier/dsl/site.rb, line 11 def initialize(*args) @source = ::Gamifier::Site.new(*args) @behaviors = [] @units = [] @rewards = [] @missions = [] @tracks = [] end
Public Instance Methods
behavior(name, &block)
click to toggle source
# File lib/gamifier/dsl/site.rb, line 24 def behavior(name, &block) new_behavior = engine.activity_definitions.build(:name => name) behaviors.push new_behavior DSL.eval_with_context(new_behavior, &block) end
engine()
click to toggle source
# File lib/gamifier/dsl/site.rb, line 20 def engine source.engine end
method_missing(*args, &block)
click to toggle source
# File lib/gamifier/dsl/site.rb, line 134 def method_missing(*args, &block) source.send(*args, &block) end
mission(name, &block)
click to toggle source
# File lib/gamifier/dsl/site.rb, line 45 def mission(name, &block) new_mission = engine.groups.build(:name => name) missions.push new_mission DSL.eval_with_context(new_mission, &block) end
reward(name, &block)
click to toggle source
# File lib/gamifier/dsl/site.rb, line 31 def reward(name, &block) new_reward = engine.reward_definitions.build(:name => name) rewards.push new_reward DSL.eval_with_context(new_reward, &block) end
save()
click to toggle source
Calls superclass method
# File lib/gamifier/dsl/site.rb, line 59 def save if super save_units! save_behaviors! save_rewards! save_missions! save_tracks! else raise Error, "Can't save #{self}" end end
save_behaviors!()
click to toggle source
# File lib/gamifier/dsl/site.rb, line 86 def save_behaviors! behaviors.each do |behavior| Gamifier.logger.info "Saving behaviors..." behavior.site_id = self._id if gbehavior = engine.send(behavior.class.path).find_by_name(behavior.name, :site => self.url) behavior._id = gbehavior._id end behavior.engine = engine behavior.save || raise(Error, "Can't save #{behavior}") end end
save_missions!()
click to toggle source
# File lib/gamifier/dsl/site.rb, line 110 def save_missions! missions.each do |mission| Gamifier.logger.info "Saving missions..." mission.site_id = self._id if gmission = engine.send(mission.class.path).find_by_name(mission.name, :site => self.url) mission._id = gmission._id end mission.engine = engine mission.save || raise(Error, "Can't save #{mission}") end end
save_rewards!()
click to toggle source
# File lib/gamifier/dsl/site.rb, line 98 def save_rewards! rewards.each do |reward| Gamifier.logger.info "Saving rewards..." reward.site_id = self._id if greward = engine.send(reward.class.path).find_by_name(reward.name, :site => self.url) reward._id = greward._id end reward.engine = engine reward.save || raise(Error, "Can't save #{reward}") end end
save_tracks!()
click to toggle source
# File lib/gamifier/dsl/site.rb, line 122 def save_tracks! tracks.each do |track| Gamifier.logger.info "Saving tracks..." track.site_id = self._id if gtrack = engine.send(track.class.path).find_by_label(track.label, :site => self.url) track._id = gtrack._id end track.engine = engine track.save || raise(Error, "Can't save #{track}") end end
save_units!()
click to toggle source
# File lib/gamifier/dsl/site.rb, line 71 def save_units! units.each do |unit| Gamifier.logger.info "Saving units..." unit.site = self.url if gunit = engine.send(unit.class.path).find_by_name(unit.name, :site => unit.site) unit._id = gunit._id # FIXME: once Badgeville returns the unit _id in the # response, remove the next line: next end unit.engine = engine unit.save || raise(Error, "Can't save #{unit}") end end
track(name, &block)
click to toggle source
# File lib/gamifier/dsl/site.rb, line 52 def track(name, &block) new_track = engine.tracks.build(:label => name) tracks.push new_track DSL.eval_with_context(new_track, &block) end
unit(name, &block)
click to toggle source
# File lib/gamifier/dsl/site.rb, line 38 def unit(name, &block) new_unit = engine.units.build(:name => name) units.push new_unit DSL.eval_with_context(new_unit, &block) end