Module: Hanami::Events::CloudPubsub::Integration::Setup

Defined in:
lib/hanami/events/cloud_pubsub/integration.rb

Overview

Helpers use to setup all integration with hanami

Class Method Summary collapse

Class Method Details

.add_configuration_helpersObject



56
57
58
59
60
61
# File 'lib/hanami/events/cloud_pubsub/integration.rb', line 56

def add_configuration_helpers
  require 'hanami/utils/load_paths'
  require 'hanami/configuration'
  ::Hanami::Configuration.include(Integration::Configuration)
  ::Hanami.extend Integration::EasyAccess
end

.hook_into_allObject



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/hanami/events/cloud_pubsub/integration.rb', line 44

def hook_into_all
  require 'hanami/components'
  # Unfortunately, hanami does not provide a way to add the component
  # requirements easily, so we take the old requirements and append 'events'
  requirements_for_all = ::Hanami::Components.component('all').send(:requirements)

  ::Hanami::Components.register 'all' do
    requires(*requirements_for_all, 'events')
    resolve { true }
  end
end

.register_events_adapterObject



18
19
20
21
22
23
# File 'lib/hanami/events/cloud_pubsub/integration.rb', line 18

def register_events_adapter
  ::Hanami::Events::Adapter.register(:cloud_pubsub) do
    require 'hanami/events/adapter/cloud_pubsub'
    ::Hanami::Events::Adapter::CloudPubsub
  end
end

.register_hanami_componentObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/hanami/events/cloud_pubsub/integration.rb', line 25

def register_hanami_component
  ::Hanami::Components.register 'events' do
    requires 'logger', 'code'

    prepare { require 'hanami/events/cloud_pubsub' }

    resolve do |conf|
      CloudPubsub.configure do |config|
        conf.cloud_pubsub.each { |blk| blk.call(config) }
      end

      require 'google/cloud/pubsub'

      opts = { pubsub: Google::Cloud::Pubsub.new, logger: Hanami::Components['logger'] }
      ::Hanami::Events.initialize(:cloud_pubsub, **opts)
    end
  end
end

.setupObject



11
12
13
14
15
16
# File 'lib/hanami/events/cloud_pubsub/integration.rb', line 11

def setup
  register_events_adapter
  register_hanami_component
  hook_into_all
  add_configuration_helpers
end