Class: Chronos::Rails::Installer

Inherits:
Object
  • Object
show all
Defined in:
lib/chronos/rails/installer.rb

Overview

Installs Rails middleware and subscribers exactly once per application.

Examples:

Chronos::Rails::Installer.new.install(Rails.application)

Class Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(notifier = Chronos, subscriber = nil) ⇒ Installer

Returns a new instance of Installer.



23
24
25
26
# File 'lib/chronos/rails/installer.rb', line 23

def initialize(notifier = Chronos, subscriber = nil)
  @notifier = notifier
  @subscriber = subscriber || NotificationsSubscriber.new(notifier)
end

Class Attribute Details

.applicationsObject (readonly)

Returns the value of attribute applications.



20
21
22
# File 'lib/chronos/rails/installer.rb', line 20

def applications
  @applications
end

.mutexObject (readonly)

Returns the value of attribute mutex.



20
21
22
# File 'lib/chronos/rails/installer.rb', line 20

def mutex
  @mutex
end

Instance Method Details

#install(application) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/chronos/rails/installer.rb', line 28

def install(application)
  options = @notifier.rails_integration_options(environment, console?)
  return false unless options[:enabled]

  self.class.mutex.synchronize do
    return false if self.class.applications[application.object_id]

    install_middleware(application, options)
    @subscriber.install
    self.class.applications[application.object_id] = true
  end
  true
rescue StandardError
  false
end

#rails_versionObject



44
45
46
# File 'lib/chronos/rails/installer.rb', line 44

def rails_version
  defined?(::Rails) && ::Rails.respond_to?(:version) ? ::Rails.version.to_s : "unknown"
end