Module: Flu

Defined in:
lib/flu-rails.rb,
lib/flu-rails/util.rb,
lib/flu-rails/event.rb,
lib/flu-rails/railtie.rb,
lib/flu-rails/version.rb,
lib/flu-rails/core_ext.rb,
lib/flu-rails/configuration.rb,
lib/flu-rails/event_factory.rb,
lib/flu-rails/event_publisher.rb,
lib/flu-rails/queue_repository.rb,
lib/flu-rails/active_record_extender.rb,
lib/flu-rails/action_controller_extender.rb,
lib/flu-rails/dummy/in_memory_event_publisher.rb

Defined Under Namespace

Modules: Dummy, Util Classes: ActionControllerExtender, ActiveRecordExtender, Configuration, CoreExt, Event, EventFactory, EventPublisher, QueueRepository, Railtie

Constant Summary collapse

VERSION =
"8.0.1"

Class Method Summary collapse

Class Method Details

.configObject



20
21
22
# File 'lib/flu-rails.rb', line 20

def self.config
  @configuration
end

.configure {|@configuration ||= Flu::Configuration.new| ... } ⇒ Object

Yields:



16
17
18
# File 'lib/flu-rails.rb', line 16

def self.configure
  yield @configuration ||= Flu::Configuration.new
end

.create_event_publisher(configuration) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/flu-rails.rb', line 54

def self.create_event_publisher(configuration)
  if is_testing_environment?
    logger.info("Loading Flu with a dummy event publisher (this will not connect any exchange)")
    require_relative "flu-rails/dummy/in_memory_event_publisher"
    Flu::Dummy::InMemoryEventPublisher.new(@configuration)
  else
    Flu::EventPublisher.new(@configuration)
  end
end

.default_application_nameObject



45
46
47
48
49
50
51
52
# File 'lib/flu-rails.rb', line 45

def self.default_application_name
  if defined?(Rails) && Rails.respond_to?(:application)
    application = Rails.application
    application.nil? ? nil : application.class.module_parent_name
  else
    nil
  end
end

.event_factoryObject



28
29
30
# File 'lib/flu-rails.rb', line 28

def self.event_factory
  @event_factory
end

.event_publisherObject



32
33
34
# File 'lib/flu-rails.rb', line 32

def self.event_publisher
  @event_publisher
end

.extend_models_and_controllersObject



71
72
73
74
# File 'lib/flu-rails.rb', line 71

def self.extend_models_and_controllers
  Flu::CoreExt.extend_model_classes(@event_factory, @event_publisher)
  Flu::CoreExt.extend_controller_classes(@event_factory, @event_publisher, @logger)
end

.initObject



36
37
38
39
40
41
42
43
# File 'lib/flu-rails.rb', line 36

def self.init
  @configuration.application_name ||= default_application_name
  raise "configuration.application_name must not be nil" if @configuration.application_name.nil?
  @logger          = @configuration.logger
  @event_factory   = Flu::EventFactory.new(@configuration)
  @event_publisher = create_event_publisher(@configuration)
  extend_models_and_controllers
end

.is_testing_environment?Boolean

Returns:

  • (Boolean)


64
65
66
67
68
69
# File 'lib/flu-rails.rb', line 64

def self.is_testing_environment?
  # 'defined?(Rails)' alone is not enough: gems such as 'rails-html-sanitizer' define an empty
  # 'Rails' namespace, so the constant can exist without railties ever defining 'Rails.env'.
  return false unless defined?(Rails) && Rails.respond_to?(:env)
  config.development_environments.include?(Rails.env)
end

.load_configurationObject



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/flu-rails.rb', line 80

def self.load_configuration
  configure do |config|
    config.development_environments       = []
    config.rejected_user_agents           = []
    config.logger                         = ::Logger.new(STDOUT)
    config.rabbitmq_host                  = "localhost"
    config.rabbitmq_port                  = 5672
    config.rabbitmq_management_scheme     = "http"
    config.rabbitmq_management_port       = 15672
    config.rabbitmq_user                  = ""
    config.rabbitmq_password              = ""
    config.rabbitmq_exchange_name         = "events"
    config.rabbitmq_exchange_durable      = true
    config.auto_connect_to_exchange       = true
    config.default_ignored_model_changes  = [:password, :password_confirmation, :created_at, :updated_at]
    config.default_ignored_request_params = [:password, :password_confirmation, :controller, :action]
    config.application_name               = nil
    config.bunny_options                  = {}
  end
end

.loggerObject



24
25
26
# File 'lib/flu-rails.rb', line 24

def self.logger
  @logger
end

.startObject



76
77
78
# File 'lib/flu-rails.rb', line 76

def self.start
  @event_publisher.connect if config.auto_connect_to_exchange
end