Module: Knuckles

Extended by:
Knuckles
Included in:
Knuckles
Defined in:
lib/knuckles.rb,
lib/knuckles/view.rb,
lib/knuckles/keygen.rb,
lib/knuckles/stages.rb,
lib/knuckles/version.rb,
lib/knuckles/pipeline.rb,
lib/knuckles/stages/dumper.rb,
lib/knuckles/stages/writer.rb,
lib/knuckles/stages/fetcher.rb,
lib/knuckles/stages/combiner.rb,
lib/knuckles/stages/enhancer.rb,
lib/knuckles/stages/hydrator.rb,
lib/knuckles/stages/renderer.rb

Overview

Knuckles is a performance focused data serialization pipeline. More simply, it tries to serialize models into large JSON payloads as quickly as possible. It operates on a collection of data through stages, passing them through a pipeline of transformations.

The default configuration uses MemoryStore, but you can configure it along with other customizations.

With the module configured you can begin transforming models into JSON (or MessagePack, whatever your API uses):

Examples:

Configuration


Knuckles.configure do |config|
  config.cache      = Readthis::Cache.new
  config.keygen     = Readthis::Expanders
  config.serializer = Oj
end

Usage with default pipeline


Knuckles.new.call(models, view: SubmissionView) #=>
  '{"submissions":[], "tags":[], "responses":[]}'

Defined Under Namespace

Modules: Keygen, Stages, View Classes: Pipeline

Constant Summary collapse

VERSION =
"0.3.0".freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#cache#cache

Module accessor for cache, defaults to Cache::MemoryStore

Returns:

  • (#cache)

    A cache instance



53
54
55
# File 'lib/knuckles.rb', line 53

def cache
  @cache ||= ActiveSupport::Cache::MemoryStore.new
end

#keygenModule

Module accessor keygen, defaults to Knuckles::Keygen

Returns:

  • (Module)

    Cache key generation module



61
62
63
# File 'lib/knuckles.rb', line 61

def keygen
  @keygen ||= Knuckles::Keygen
end

#notificationsModule

Module accessor for notifications, defaults to ActiveSupport::Notifications

Returns:

  • (Module)

    Instrumentation module



70
71
72
# File 'lib/knuckles.rb', line 70

def notifications
  @notifications ||= ActiveSupport::Notifications
end

#serializerModule

Module accessor for serializer, defaults to JSON

Returns:

  • (Module)

    The serializer



78
79
80
# File 'lib/knuckles.rb', line 78

def serializer
  @serializer ||= JSON
end

Instance Method Details

#configure {|_self| ... } ⇒ Object

Convenience for setting properties as within a block

Examples:

Configuring knuckles


Knuckles.configure do |config|
  config.serializer = MessagePack
end

Yields:

  • (_self)

Yield Parameters:

  • _self (Knuckles)

    the object that the method was called on



90
91
92
# File 'lib/knuckles.rb', line 90

def configure
  yield self
end

#new(*args) ⇒ Object

Convenience method for initializing a new Pipeline



45
46
47
# File 'lib/knuckles.rb', line 45

def new(*args)
  Knuckles::Pipeline.new(*args)
end

#reset!Object



95
96
97
98
99
100
# File 'lib/knuckles.rb', line 95

def reset!
  @cache = nil
  @keygen = nil
  @notifications = nil
  @serializer = nil
end