Class: IndexState
- Inherits:
-
Object
- Object
- IndexState
- Defined in:
- indexer/app/lib/index_state.rb
Overview
we store the state of uri’s index in the indexer_state directory
Instance Method Summary collapse
-
#get_last_mtime(repository_id, record_type) ⇒ Object
-
#initialize(state_dir = "indexer_state") ⇒ IndexState
constructor
A new instance of IndexState.
-
#path_for(repository_id, record_type) ⇒ Object
-
#set_last_mtime(repository_id, record_type, time) ⇒ Object
Constructor Details
#initialize(state_dir = "indexer_state") ⇒ IndexState
Returns a new instance of IndexState.
4 5 6 |
# File 'indexer/app/lib/index_state.rb', line 4 def initialize(state_dir = "indexer_state") @state_dir = File.join(AppConfig[:data_directory], state_dir) end |
Instance Method Details
#get_last_mtime(repository_id, record_type) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'indexer/app/lib/index_state.rb', line 27 def get_last_mtime(repository_id, record_type) path = path_for(repository_id, record_type) begin File.open("#{path}.dat", "r") do |fh| fh.readline.to_i end rescue Errno::ENOENT # If we've never run against this repository_id/type before, just index # everything. 0 end end |
#path_for(repository_id, record_type) ⇒ Object
9 10 11 12 |
# File 'indexer/app/lib/index_state.rb', line 9 def path_for(repository_id, record_type) FileUtils.mkdir_p(@state_dir) File.join(@state_dir, "#{repository_id}_#{record_type}") end |
#set_last_mtime(repository_id, record_type, time) ⇒ Object
15 16 17 18 19 20 21 22 23 24 |
# File 'indexer/app/lib/index_state.rb', line 15 def set_last_mtime(repository_id, record_type, time) path = path_for(repository_id, record_type) File.open("#{path}.tmp", "w") do |fh| fh.puts(time.to_i) end # check file exists for multi-instance deployment race condition File.rename("#{path}.tmp", "#{path}.dat") if File.exist?("#{path}.tmp") end |