Class: Madeleine::CommandLog
- Inherits:
-
Object
- Object
- Madeleine::CommandLog
- Defined in:
- lib/madeleine.rb
Overview
:nodoc:
Class Method Summary collapse
- .highest_log(directory_name, file_service) ⇒ Object
- .log_file_names(directory_name, file_service) ⇒ Object
Instance Method Summary collapse
- #close ⇒ Object
-
#initialize(path, file_service) ⇒ CommandLog
constructor
A new instance of CommandLog.
- #store(command) ⇒ Object
Constructor Details
#initialize(path, file_service) ⇒ CommandLog
Returns a new instance of CommandLog.
272 273 274 275 276 |
# File 'lib/madeleine.rb', line 272 def initialize(path, file_service) id = self.class.highest_log(path, file_service) + 1 numbered_file = NumberedFile.new(path, "command_log", id) @file = file_service.open(numbered_file.name, 'wb') end |
Class Method Details
.highest_log(directory_name, file_service) ⇒ Object
288 289 290 291 292 293 294 295 296 297 298 |
# File 'lib/madeleine.rb', line 288 def self.highest_log(directory_name, file_service) highest = 0 log_file_names(directory_name, file_service).each {|file_name| match = /^(\d{#{FILE_COUNTER_SIZE}})/.match(file_name) n = match[1].to_i if n > highest highest = n end } highest end |
.log_file_names(directory_name, file_service) ⇒ Object
262 263 264 265 266 267 268 269 270 |
# File 'lib/madeleine.rb', line 262 def self.log_file_names(directory_name, file_service) return [] unless file_service.exist?(directory_name) result = file_service.dir_entries(directory_name).select {|name| name =~ /^\d{#{FILE_COUNTER_SIZE}}\.command_log$/ } result.each {|name| name.untaint } result.sort! result end |
Instance Method Details
#close ⇒ Object
278 279 280 |
# File 'lib/madeleine.rb', line 278 def close @file.close end |
#store(command) ⇒ Object
282 283 284 285 286 |
# File 'lib/madeleine.rb', line 282 def store(command) Marshal.dump(command, @file) @file.flush @file.fsync end |