class ActionMessenger::Base
Constants
- DeliveryLog
Attributes
caller_method_name[R]
deliveries[R]
Public Class Methods
logger()
click to toggle source
# File lib/action_messenger/base.rb, line 15 def logger ActionMessenger.config.logger || (defined?(Rails) ? Rails.logger : nil) end
new()
click to toggle source
# File lib/action_messenger/base.rb, line 39 def initialize @deliveries = [] end
Private Class Methods
method_missing(method_name, *args)
click to toggle source
Calls superclass method
# File lib/action_messenger/base.rb, line 21 def method_missing(method_name, *args) if action_methods.include?(method_name.to_s) ActionMessenger::MessageDelivery.new(self, method_name, *args) else super end end
respond_to_missing?(method, include_all = false)
click to toggle source
Calls superclass method
# File lib/action_messenger/base.rb, line 29 def respond_to_missing?(method, include_all = false) action_methods.include?(method.to_s) || super end
Public Instance Methods
message_to_slack(channel:, options: {})
click to toggle source
message to slack
@param [String] channel slack channel.
ex. #general
@param [Hash] options Slack API Request Options
ex. https://api.slack.com/methods/chat.postMessage
ex. message_to_slack
(channel: '#general', options: {text: 'sample'})
# File lib/action_messenger/base.rb, line 51 def message_to_slack(channel:, options: {}) @caller_method_name = caller[0][/`([^']*)'/, 1] options = apply_defaults(options) message = nil ActiveSupport::Notifications.instrument('message_to_slack.action_messenger', channel: channel, body: options[:text]) do message = slack_client.message(channel, options) end message ensure self.deliveries << DeliveryLog.new(__method__, channel, message) end
upload_file_to_slack(channels: ,file: ,options: {})
click to toggle source
upload file to slack
@param [String] channels slack channel
ex. #general, #hoge
@param [Faraday::UploadIO] file upload file
ex. Faraday::UploadIO.new('/path/to/sample.jpg', 'image/jpg')
@param [Hash] options
# File lib/action_messenger/base.rb, line 70 def upload_file_to_slack(channels: ,file: ,options: {}) upload_file = nil ActiveSupport::Notifications.instrument('upload_file_to_slack.action_messenger', channels: channels) do upload_file = slack_client.upload_file(channels, file, options) end upload_file ensure self.deliveries << DeliveryLog.new(__method__, channels, upload_file) end
Private Instance Methods
apply_defaults(options)
click to toggle source
# File lib/action_messenger/base.rb, line 83 def apply_defaults(options) options[:text] = render_template_text if options[:text].blank? options end
render_template_text()
click to toggle source
# File lib/action_messenger/base.rb, line 88 def render_template_text return '' if views_path.blank? lookup_context = ActionView::LookupContext.new(views_path) lookup_context.cache = false view_context = ActionView::Base.new(lookup_context) instance_variables.each {|name| view_context.assign(name.to_s.gsub('@', '').to_sym => instance_variable_get(name))} view_context.render(template: caller_method_name.to_s, prefixes: self.class.name.underscore.pluralize) end
slack_client()
click to toggle source
# File lib/action_messenger/base.rb, line 104 def slack_client ActionMessenger::Providers::Slack.new end
views_path()
click to toggle source
# File lib/action_messenger/base.rb, line 100 def views_path ActionMessenger.config.views_path || (defined?(Rails) ? Rails.root.join('app', 'views') : nil) end