Sha256: 9c56e3c2d4077ca26a16554588c424e676a89d3d62351d23c8523b517a325fd4

Contents?: true

Size: 1.3 KB

Versions: 10

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

module Esse
  # https://github.com/elastic/elasticsearch-ruby/blob/master/elasticsearch-api/lib/elasticsearch/api/actions/indices/put_settings.rb
  class Index
    module ClassMethods
      def settings_hash
        hash = setting.body
        { Esse::SETTING_ROOT_KEY => (hash.key?(Esse::SETTING_ROOT_KEY) ? hash[Esse::SETTING_ROOT_KEY] : hash) }
      end

      # Define /_settings definition by each index.
      #
      # +hash+: The body of the request includes the updated settings.
      # +block+: Overwrite default :to_h from IndexSetting instance
      #
      # Example:
      #
      #   class UserIndex < Esse::Index
      #     settings {
      #       number_of_replicas: 4,
      #     }
      #   end
      #
      #   class UserIndex < Esse::Index
      #     settings do
      #       # do something to load settings..
      #     end
      #   end
      def settings(hash = {}, &block)
        @setting = Esse::IndexSetting.new(body: hash, paths: template_dirs, globals: -> { cluster.settings })
        return unless block

        @setting.define_singleton_method(:to_h, &block)
      end

      private

      def setting
        @setting ||= Esse::IndexSetting.new(paths: template_dirs, globals: -> { cluster.settings })
      end
    end

    extend ClassMethods
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
esse-0.3.4 lib/esse/index/settings.rb
esse-0.3.3 lib/esse/index/settings.rb
esse-0.3.2 lib/esse/index/settings.rb
esse-0.3.1 lib/esse/index/settings.rb
esse-0.3.0 lib/esse/index/settings.rb
esse-0.2.6 lib/esse/index/settings.rb
esse-0.2.5 lib/esse/index/settings.rb
esse-0.2.4 lib/esse/index/settings.rb
esse-0.2.3 lib/esse/index/settings.rb
esse-0.2.2 lib/esse/index/settings.rb