Sha256: 1989bb273b93dfb02968a08ea0e2fceffaeaebdef600fed13039b1f7baf66d85
Contents?: true
Size: 1.65 KB
Versions: 3
Compression:
Stored size: 1.65 KB
Contents
module Ryespy module Listener module Fogable def check(prefix) @logger.debug { "prefix: #{prefix}" } @logger.debug { "redis_key: #{redis_key}" } seen_files = @redis.hgetall(redis_key) unseen_files = get_unseen_files(prefix, seen_files) @logger.debug { "unseen_files: #{unseen_files}" } unseen_files.each do |filename, checksum| @redis.hset(redis_key, filename, checksum) # prefix is not included as it is part of key, and list operations # return files (virtually) recursively. Constructing Redis key in this # way means a file matching multiple prefixes will only notify once. @notifiers.each do |notifier| notifier.notify(self.class::SIDEKIQ_JOB_CLASS, [filename]) end end @logger.info { "#{prefix}* has #{unseen_files.count} new files" } end private def redis_key [ self.class::REDIS_KEY_PREFIX, @config[:directory], ].join(':') end def get_unseen_files(prefix, seen_files) files = {} @fog_storage.directories.get(@config[:directory], :prefix => prefix ).files.each do |file| if file.content_type == 'application/directory' || file.content_length == 0 next # virtual dirs or 0-length file end if seen_files[file.key] != file.etag # etag is server-side checksum files[file.key] = file.etag end end files end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ryespy-1.1.1 | lib/ryespy/listener/fogable.rb |
ryespy-1.1.0 | lib/ryespy/listener/fogable.rb |
ryespy-1.0.0 | lib/ryespy/listener/fogable.rb |