Sha256: c43ee4c581635cdb13470c30b64ec10e07061284f6b66060eea5fac4224fc085
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
require_relative 'slack_mailer/configuration' require_relative 'slack_mailer/delivery_worker' require 'slack-notifier' module Slack class Mailer class << self def method_missing(method, *args) self.new.send(method, *args) end def send_message(channel = '', name = '', message = '') return if channel.empty? || name.empty? || message.empty? Slack::Mailer::DeliveryWorker.perform_async(name: name, message: message, channel: channel) end def send_direct_message(channel = '', name = '', message = '') return if channel.empty? || name.empty? || message.empty? url = Slack::Mailer::Configuration.config.slack_hook_urls.mrandom Slack::Notifier.new(url, username: name, channel: channel, link_names: 1).ping(message) end end def mail(to: nil, template: nil, use_sidekiq: true) channel = '#' << to instance_variables = self.instance_variables.map { |instance_variable| { instance_variable => self.instance_variable_get(instance_variable) } }.reduce(:merge) message = collect_message(template, instance_variables) method = use_sidekiq ? :send_message : :send_direct_message self.class.send(method, channel, "#{self.class.name}##{template}", message) end def collect_message(template, instance_variables) template = "#{template}.#{Slack::Mailer::Configuration.config.templates_type}" template + '.erb' if Slack::Mailer::Configuration.config.erb_in_templates ActionView::Base.new("#{Slack::Mailer::Configuration.config.templates_path}/#{self.class.name.underscore}", {}, ActionController::Base.new).render(file: template, locals: instance_variables || {}) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
slack_mailer-0.1.0 | lib/slack_mailer.rb |