Class: MailManager::MailableRegistry

Inherits:
Object
  • Object
show all
Defined in:
app/models/mail_manager/mailable_registry.rb

Defined Under Namespace

Modules: Mailable

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#mailable_thingsObject (readonly)

Returns the value of attribute mailable_things.



45
46
47
# File 'app/models/mail_manager/mailable_registry.rb', line 45

def mailable_things
  @mailable_things
end

Class Method Details

.findObject

Finds available mailable items by searching through all registered mailables, calling their finders and sorting by name.



86
87
88
89
90
91
92
93
# File 'app/models/mail_manager/mailable_registry.rb', line 86

def self.find
  mailable_items = []
  @@mailable_things.each_pair do |thing,methods|
    Rails.logger.debug "Gathering #{thing} mailables with #{methods[:find_mailables]}"
    mailable_items += thing.constantize.send(methods[:find_mailables])
  end
  mailable_items.sort{|a,b| a.name <=> b.name}
end

.register(klass, methods = {}) ⇒ Object

Registers a class as a “mailable” item.

Parameters::
  klass => Class constant to be registered
  methods => a hash which maps :find, :name, and mime type to methods; :parts {'mime-type' => :method}

Example Useage:
  you may want to wrap your register in a rescue block if you don't know whether or not the 
  mailing list manager exists in your current project.

  begin
    require 'mail_manager/mailable_registry'
    MailableRegistry.register(MyMailable,{
      :find_mailables => :active,
      :name => :name,
      :parts => [
        ['text/plain' => :email_text],
        ['text/html' => :email_html]
      ]
    })
    Rails.logger.debug "Registered Newsletter Mailable"
  rescue => e
    Rails.logger.debug "Couldn't register Newsletter Mailable #{e.message}"
  end


73
74
75
76
# File 'app/models/mail_manager/mailable_registry.rb', line 73

def self.register(klass,methods={})
  Rails.logger.warn "Registered Mailable: #{klass.inspect} - #{methods.inspect}"
  @@mailable_things.merge!({klass => methods})
end

.unregister(klass) ⇒ Object

unregister a mailable



79
80
81
# File 'app/models/mail_manager/mailable_registry.rb', line 79

def self.unregister(klass)
  @@mailable_things.delete(klass)
end