Class: Threadless

Inherits:
Object
  • Object
show all
Defined in:
lib/threadless.rb

Overview

A single threaded runlater implementation

Defined Under Namespace

Modules: InstanceMethods Classes: Adapter, Executor

Constant Summary collapse

ENV_KEY =
"rack.threadless.run_later"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Threadless

The metal interface: initializing



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

def initialize(app)
  @app = app
end

Class Method Details

.initObject

– activate instance methods and middleware, on Rails



77
78
79
80
81
82
83
# File 'lib/threadless.rb', line 77

def self.init
  ActionController::Base.send(:include, Threadless::InstanceMethods)
  ActionController::Base.send(:helper, Threadless::InstanceMethods)

  middleware = ActionController::MiddlewareStack::Middleware.new(self)
  ActionController::Dispatcher.middleware.push middleware
end

Instance Method Details

#call(env) ⇒ Object

The metal interface: call



67
68
69
70
71
72
73
# File 'lib/threadless.rb', line 67

def call(env)
  status, headers, body = *@app.call(env)
  
  body = Executor.new(body, env[ENV_KEY]) if env[ENV_KEY]
  
  [ status, headers, body ]
end