Sha256: 6f8a1c38e8a83b6e16f76842ada374266a0b35266d0d64d4e3e2ec5814bdc83a

Contents?: true

Size: 1.64 KB

Versions: 12

Compression:

Stored size: 1.64 KB

Contents

module Astrotrain
  CALLBACK_TYPES = [:pre_mapping, :pre_processing, :post_processing]
  class << self
    attr_accessor :root, :lib_root, :callbacks
  end

  def self.load(root = Dir.pwd)
    self.root     = File.expand_path(root)
    self.lib_root = File.expand_path(File.dirname(__FILE__))
    load_dependencies
    yield if block_given?
    %w(tmail message mapping logged_mail mapping/transport mapping/http_post mapping/jabber).each do |lib|
      require "astrotrain/#{lib}"
    end
    Astrotrain::Mail::ALLOW_MULTIPLE['delivered-to'] = true
  end

  def self.callback(name, *args, &block)
    found = callbacks[name]
    if block
      found << block
    else
      found.each { |cback| cback.call(*args) }
    end
    found
  end

  def self.clear_callbacks
    self.callbacks = CALLBACK_TYPES.inject({}) { |memo, ctype| memo.update(ctype => []) }
  end

  clear_callbacks

private
  # help me ryan tomayko, you're my only help
  def self.load_dependencies
    require 'rubygems'
    gem 'addressable',   '2.0.2'

    dm_ver = "0.9.11"
    gem "dm-core",        dm_ver # The datamapper ORM
    gem "dm-aggregates",  dm_ver # Provides your DM models with count, sum, avg, min, max, etc.
    gem "dm-timestamps",  dm_ver # Automatically populate created_at, created_on, etc. when those properties are present.
    gem "dm-types",       dm_ver # Provides additional types, including csv, json, yaml.
    gem "dm-validations", dm_ver # Validation framework

    $LOAD_PATH.unshift File.join(lib_root, 'vendor', 'rest-client', 'lib')

    %w(dm-core dm-aggregates dm-timestamps dm-types dm-validations tmail rest_client).each do |lib|
      require lib
    end
  end
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
entp-astrotrain-0.3.0 lib/astrotrain.rb
entp-astrotrain-0.3.1 lib/astrotrain.rb
entp-astrotrain-0.4.0 lib/astrotrain.rb
entp-astrotrain-0.4.1 lib/astrotrain.rb
entp-astrotrain-0.4.2 lib/astrotrain.rb
entp-astrotrain-0.4.3 lib/astrotrain.rb
astrotrain-0.4.4 lib/astrotrain.rb
astrotrain-0.4.3 lib/astrotrain.rb
astrotrain-0.4.2 lib/astrotrain.rb
astrotrain-0.4.1 lib/astrotrain.rb
astrotrain-0.4.0 lib/astrotrain.rb
astrotrain-0.3.1 lib/astrotrain.rb