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_things ⇒ Object (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

.find ⇒ Object

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