Sha256: ec4531dce2208c0ab78d049b617d508cf2d798223f14f870b2cf0ae524db9bb3

Contents?: true

Size: 1.07 KB

Versions: 8

Compression:

Stored size: 1.07 KB

Contents

require 'fluoride-collector'
require 'fluoride-collector/storage'
module Fluoride
  module Collector
    class Storage
      class FS < Storage
        def directory
          @config.directory
        end

        def storage_limit
          @config.storage_limit
        end

        def write
          storage_file do |file|
            file.write(record_yaml)
          end
        end

        def storage_used
          dir = Dir.new(directory)
          dir.inject(0) do |sum, file|
            if file =~ %r{\A\.}
              sum
            else
              sum + File.size(File::join(directory, file))
            end
          end
        end

        def storage_path
          thread_locals[collection_type] ||= File::join(directory, "#{collection_type}-#{Process.pid}-#{Thread.current.object_id}.yml")
        end

        def storage_file
          FileUtils.mkdir_p(File::dirname(storage_path))
          return if storage_used > storage_limit
          File::open(storage_path, "a") do |file|
            yield file
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
fluoride-collector-0.0.11 lib/fluoride-collector/storage/fs.rb
fluoride-collector-0.0.10 lib/fluoride-collector/storage/fs.rb
fluoride-collector-0.0.9 lib/fluoride-collector/storage/fs.rb
fluoride-collector-0.0.8 lib/fluoride-collector/storage/fs.rb
fluoride-collector-0.0.7 lib/fluoride-collector/storage/fs.rb
fluoride-collector-0.0.6 lib/fluoride-collector/storage/fs.rb
fluoride-collector-0.0.5 lib/fluoride-collector/storage/fs.rb
fluoride-collector-0.0.4 lib/fluoride-collector/storage/fs.rb