module Hanami::Events::CloudPubsub::Integration::Setup

Helpers use to setup all integration with hanami

Public Instance Methods

add_configuration_helpers() click to toggle source
# 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_all() click to toggle source
# 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_adapter() click to toggle source
# 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_component() click to toggle source
# 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
setup() click to toggle source
# 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