Class: MailManager::MailableRegistry
- Inherits:
-
Object
- Object
- MailManager::MailableRegistry
- Defined in:
- app/models/mail_manager/mailable_registry.rb
Defined Under Namespace
Modules: Mailable
Instance Attribute Summary collapse
-
#mailable_things ⇒ Object
readonly
Returns the value of attribute mailable_things.
Class Method Summary collapse
-
.find ⇒ Object
Finds available mailable items by searching through all registered mailables, calling their finders and sorting by name.
-
.register(klass, methods = {}) ⇒ Object
Registers a class as a “mailable” item.
-
.unregister(klass) ⇒ Object
unregister a mailable.
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 |