Sha256: 85fafa8ec248d7cc4d355256b6348b2ef24c26afc4157d5ea0c4ba81bdd44a2c
Contents?: true
Size: 1.33 KB
Versions: 8
Compression:
Stored size: 1.33 KB
Contents
require File.dirname(__FILE__) + "/notifier/base" module Integrity class Notifier include DataMapper::Resource property :id, Integer, :serial => true property :name, String, :nullable => false property :config, Yaml, :nullable => false, :lazy => false belongs_to :project, :class_name => "Integrity::Project" validates_is_unique :name, :scope => :project_id validates_present :project_id def self.available constants.map { |name| const_get(name) }.select { |notifier| valid_notifier?(notifier) } end def self.enable_notifiers(project, enabled, config={}) all(:project_id => project).destroy! list_of_enabled_notifiers(enabled).each do |name| create! :project_id => project, :name => name, :config => config[name] end end def notify_of_build(build) to_const.notify_of_build(build, config) end private def to_const self.class.module_eval(name) end def self.list_of_enabled_notifiers(names) [*names].reject { |n| n.nil? } end private_class_method :list_of_enabled_notifiers def self.valid_notifier?(notifier) notifier.respond_to?(:to_haml) && notifier.respond_to?(:notify_of_build) && notifier != Notifier::Base end private_class_method :valid_notifier? end end
Version data entries
8 entries across 8 versions & 3 rubygems