Class: ActiveSupport::Cache::ZstdCompressor

Inherits:
Object
  • Object
show all
Defined in:
lib/active_support/cache/zstd_compressor.rb,
lib/active_support/cache/zstd_compressor/errors.rb,
lib/active_support/cache/zstd_compressor/version.rb,
lib/active_support/cache/zstd_compressor/with_zlib_fallback.rb

Direct Known Subclasses

WithZlibFallback

Defined Under Namespace

Classes: Error, NotZstdError, WithZlibFallback

Constant Summary collapse

VERSION =
"0.2.0"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(level: 3) ⇒ ZstdCompressor

Returns a new instance of ZstdCompressor.

Parameters:

  • level (Integer) (defaults to: 3)

    Compression level

Raises:

  • (ArgumentError)


17
18
19
20
21
# File 'lib/active_support/cache/zstd_compressor.rb', line 17

def initialize(level: 3)
  raise ArgumentError, "Compression level must be an Integer" unless level.is_a?(Integer)

  @level = level
end

Instance Attribute Details

#levelInteger (readonly)

Returns Compression level.

Returns:

  • (Integer)

    Compression level



14
15
16
# File 'lib/active_support/cache/zstd_compressor.rb', line 14

def level
  @level
end

Instance Method Details

#deflate(inflated) ⇒ Object



23
24
25
# File 'lib/active_support/cache/zstd_compressor.rb', line 23

def deflate(inflated)
  Zstd.compress(inflated, level:)
end

#inflate(deflated) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/active_support/cache/zstd_compressor.rb', line 27

def inflate(deflated)
  Zstd.decompress(deflated)
rescue StandardError => e
  # v1.5
  raise NotZstdError, e.message if e.message.include?("not compressed by zstd")

  # v2.0
  raise NotZstdError, e.message if e.message.include?("zstd") && e.message.include?("magic not found")

  raise
end