Sha256: f6763f7de55f44209ecdc7b43feecdd346c4cfef1bb154f6a84fb9c68ea9381a

Contents?: true

Size: 906 Bytes

Versions: 62

Compression:

Stored size: 906 Bytes

Contents

module Workarea
  module Configuration
    module Elasticsearch
      extend self

      def find
        workarea_config.presence || secrets_config.presence || env_config
      end

      def workarea_config
        (Workarea.config.elasticsearch || {}).deep_symbolize_keys
      end

      def secrets_config
        result = Rails.application.secrets.elasticsearch || {}
        result.deep_dup.deep_symbolize_keys
      end

      def env_config
        if env_hosts.present?
          { urls: env_hosts }
        elsif ENV['WORKAREA_ELASTICSEARCH_URL'].present?
          { url: ENV['WORKAREA_ELASTICSEARCH_URL'] }
        else
          { url: 'localhost:9200', logger: Rails.logger }
        end
      end

      private

      def env_hosts
        ENV
          .select { |k| k =~ /^WORKAREA_ELASTICSEARCH_URL_\d+$/ }
          .map(&:last)
          .reject(&:blank?)
      end
    end
  end
end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
workarea-core-3.4.13 lib/workarea/configuration/elasticsearch.rb
workarea-core-3.4.12 lib/workarea/configuration/elasticsearch.rb