Class: Elastics::VersionManager
- Inherits:
-
Object
- Object
- Elastics::VersionManager
- Defined in:
- lib/elastics/version_manager.rb
Instance Attribute Summary collapse
-
#service_index ⇒ Object
readonly
Returns the value of attribute service_index.
Class Method Summary collapse
Instance Method Summary collapse
- #current_version(index) ⇒ Object
- #index_name(index, version = self.class.default_version) ⇒ Object
-
#initialize(client, options = {}) ⇒ VersionManager
constructor
A new instance of VersionManager.
- #next_version(index) ⇒ Object
- #prefixed_index(index) ⇒ Object
- #reset ⇒ Object
- #set(index, data) ⇒ Object
- #update(index, data) ⇒ Object
- #version_number(index, version) ⇒ Object
- #versions ⇒ Object
Constructor Details
#initialize(client, options = {}) ⇒ VersionManager
Returns a new instance of VersionManager.
25 26 27 28 29 |
# File 'lib/elastics/version_manager.rb', line 25 def initialize(client, = {}) @service_index = [:service_index] || '.elastics' @index_prefix = [:index_prefix] @client = client end |
Instance Attribute Details
#service_index ⇒ Object (readonly)
Returns the value of attribute service_index.
23 24 25 |
# File 'lib/elastics/version_manager.rb', line 23 def service_index @service_index end |
Class Method Details
.default_version ⇒ Object
4 5 6 7 |
# 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) ⇒ Object
9 10 11 12 |
# File 'lib/elastics/version_manager.rb', line 9 def default_version=(version) @default_version = version Model.list.each &:reset_elastics_index_name end |
.use_version(version) ⇒ Object
14 15 16 17 18 19 20 |
# 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 |
Instance Method Details
#current_version(index) ⇒ Object
58 59 60 |
# File 'lib/elastics/version_manager.rb', line 58 def current_version(index) versions[index][:current] end |
#index_name(index, version = self.class.default_version) ⇒ Object
78 79 80 81 82 83 84 |
# 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) ⇒ Object
62 63 64 |
# File 'lib/elastics/version_manager.rb', line 62 def next_version(index) current_version(index) + 1 end |
#prefixed_index(index) ⇒ Object
74 75 76 |
# File 'lib/elastics/version_manager.rb', line 74 def prefixed_index(index) "#{@index_prefix}#{index}" end |
#reset ⇒ Object
31 32 33 34 |
# File 'lib/elastics/version_manager.rb', line 31 def reset @versions = nil self end |
#set(index, data) ⇒ Object
40 41 42 43 44 |
# 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) ⇒ Object
36 37 38 |
# File 'lib/elastics/version_manager.rb', line 36 def update(index, data) set index, versions[index].merge(data) end |
#version_number(index, version) ⇒ Object
66 67 68 69 70 71 72 |
# 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 ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 |
# 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 |