class Elastics::VersionManager
Attributes
service_index[R]
Public Class Methods
default_version()
click to toggle source
# File lib/elastics/version_manager.rb, line 4 def default_version @default_version = ENV['ELASTICS_MAPPING_VERSION'] unless defined?(@default_version) @default_version end
default_version=(version)
click to toggle source
# File lib/elastics/version_manager.rb, line 9 def default_version=(version) @default_version = version Model.list.each &:reset_elastics_index_name end
new(client, options = {})
click to toggle source
# File lib/elastics/version_manager.rb, line 25 def initialize(client, options = {}) @service_index = options[:service_index] || '.elastics' @index_prefix = options[:index_prefix] @client = client end
use_version(version) { || ... }
click to toggle source
# File lib/elastics/version_manager.rb, line 14 def use_version(version) old_version = default_version self.default_version = version yield ensure self.default_version = old_version end
Public Instance Methods
current_version(index)
click to toggle source
# File lib/elastics/version_manager.rb, line 58 def current_version(index) versions[index][:current] end
index_name(index, version = self.class.default_version)
click to toggle source
# File lib/elastics/version_manager.rb, line 78 def index_name(index, version = self.class.default_version) if version && version != :alias "#{prefixed_index(index)}-v#{version_number index, version}" else prefixed_index(index) end end
next_version(index)
click to toggle source
# File lib/elastics/version_manager.rb, line 62 def next_version(index) current_version(index) + 1 end
prefixed_index(index)
click to toggle source
# File lib/elastics/version_manager.rb, line 74 def prefixed_index(index) "#{@index_prefix}#{index}" end
reset()
click to toggle source
# File lib/elastics/version_manager.rb, line 31 def reset @versions = nil self end
set(index, data)
click to toggle source
# File lib/elastics/version_manager.rb, line 40 def set(index, data) @client.post index: @service_index, type: :mapping_versions, id: prefixed_index(index), body: data @versions[index] = data.with_indifferent_access end
update(index, data)
click to toggle source
# File lib/elastics/version_manager.rb, line 36 def update(index, data) set index, versions[index].merge(data) end
version_number(index, version)
click to toggle source
# File lib/elastics/version_manager.rb, line 66 def version_number(index, version) case version.to_s when 'current' then current_version(index) when 'next' then next_version(index) else raise NameError, "Invalid version alias: #{version}" end end
versions()
click to toggle source
# File lib/elastics/version_manager.rb, line 46 def versions @versions ||= Hash.new do |hash, index| result = @client.get index: @service_index, type: :mapping_versions, id: prefixed_index(index) if result hash[index] = result['_source'].with_indifferent_access else set index, current: 0 end end end