class Linter

Constants

MissingSubscriptions

Attributes

config[R]

Public Class Methods

new(config) click to toggle source
# File lib/pub_sub/linter.rb, line 4
def initialize(config)
  @config = config
end

Public Instance Methods

lint!() click to toggle source
# File lib/pub_sub/linter.rb, line 8
def lint!
  raise MissingSubscriptions, error_message if missing_subscriptions.present?
end

Private Instance Methods

error_message() click to toggle source
# File lib/pub_sub/linter.rb, line 14
def error_message
  "The following subscriptions are missing: \n#{missing_subscriptions.join("\n")}"
end
handlers_list() click to toggle source
# File lib/pub_sub/linter.rb, line 32
def handlers_list
  Dir[Rails.root.join('app/event_handlers/*/*.rb')].map do |file_path|
    file_path.
      sub("#{Rails.root}/app/event_handlers/", '').
      sub('_handler.rb', '')
  end
end
missing_subscriptions() click to toggle source
# File lib/pub_sub/linter.rb, line 18
def missing_subscriptions
  (handlers_list - subscriptions_list)
end
subscriptions_list() click to toggle source
# File lib/pub_sub/linter.rb, line 24
def subscriptions_list
  config.flat_map do |domain_name, subscriptions|
    subscriptions.keys.map do |event_name|
      "#{domain_name}/#{event_name.sub('__', '_')}"
    end
  end
end