module ActionSubscriber::Subscribable
Public Instance Methods
allow_low_priority_methods?()
click to toggle source
# File lib/action_subscriber/subscribable.rb, line 3 def allow_low_priority_methods? !!(::ActionSubscriber.configuration.allow_low_priority_methods) end
filter_low_priority_methods(methods)
click to toggle source
# File lib/action_subscriber/subscribable.rb, line 7 def filter_low_priority_methods(methods) if allow_low_priority_methods? return methods else return methods - methods.grep(/_low/) end end
generate_queue_name(method_name)
click to toggle source
# File lib/action_subscriber/subscribable.rb, line 15 def generate_queue_name(method_name) [ local_application_name, remote_application_name, resource_name, method_name ].compact.join('.') end
generate_routing_key_name(method_name)
click to toggle source
# File lib/action_subscriber/subscribable.rb, line 24 def generate_routing_key_name(method_name) [ remote_application_name, resource_name, method_name ].compact.join('.') end
local_application_name(reload = false)
click to toggle source
# File lib/action_subscriber/subscribable.rb, line 32 def local_application_name(reload = false) if reload || @_local_application_name.nil? @_local_application_name = case when ENV['APP_NAME'] then ENV['APP_NAME'].to_s.dup when defined?(::Rails) then if ::Rails.application.class.respond_to?(:module_parent_name) ::Rails.application.class.module_parent_name.dup else ::Rails.application.class.parent_name.dup end else raise "Define an application name (ENV['APP_NAME'])" end @_local_application_name.downcase! end @_local_application_name end
queue_name_for_method(method_name)
click to toggle source
Build the ‘queue` for a given method.
If the queue name is not set, the queue name is
"local.remote.resoure.action"
Example
"bob.alice.user.created"
# File lib/action_subscriber/subscribable.rb, line 61 def queue_name_for_method(method_name) return queue_names[method_name] if queue_names[method_name] queue_name = generate_queue_name(method_name) queue_for(method_name, queue_name) return queue_name end
resource_name()
click to toggle source
The name of the resource respresented by this subscriber. If the class name were ‘UserSubscriber` the resource_name
would be `user`.
# File lib/action_subscriber/subscribable.rb, line 72 def resource_name @_resource_name ||= self.name.underscore.gsub(/_subscriber/, '').to_s end
routing_key_name_for_method(method_name)
click to toggle source
Build the ‘routing_key` for a given method.
If the routing_key name is not set, the routing_key name is
"remote.resoure.action"
Example
"amigo.user.created"
# File lib/action_subscriber/subscribable.rb, line 84 def routing_key_name_for_method(method_name) return routing_key_names[method_name] if routing_key_names[method_name] routing_key_name = generate_routing_key_name(method_name) routing_key_for(method_name, routing_key_name) return routing_key_name end
subscribable_methods()
click to toggle source
# File lib/action_subscriber/subscribable.rb, line 92 def subscribable_methods return @_subscribable_methods if @_subscribable_methods methods = instance_methods methods -= ::Object.instance_methods self.included_modules.each do |mod| methods -= mod.instance_methods end @_subscribable_methods = filter_low_priority_methods(methods) @_subscribable_methods.sort! return @_subscribable_methods end