Class: Cloudflare::QueueContext

Inherits:
Object
  • Object
show all
Defined in:
lib/homura/runtime/queue.rb

Overview

‘self` inside a `consume_queue do |batch| … end` block. Exposes env / ctx helpers alongside the batch so the block can reach the same D1 / KV / R2 bindings an HTTP route would. This keeps the consumer side consistent with Phase 9’s ScheduledContext.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(batch, js_env, js_ctx) ⇒ QueueContext

Returns a new instance of QueueContext.



363
364
365
366
367
368
# File 'lib/homura/runtime/queue.rb', line 363

def initialize(batch, js_env, js_ctx)
  @batch = batch
  @js_env = js_env
  @js_ctx = js_ctx
  @env = build_env(js_env)
end

Instance Attribute Details

#batchObject (readonly)

Returns the value of attribute batch.



361
362
363
# File 'lib/homura/runtime/queue.rb', line 361

def batch
  @batch
end

#envObject (readonly)

Returns the value of attribute env.



361
362
363
# File 'lib/homura/runtime/queue.rb', line 361

def env
  @env
end

#js_ctxObject (readonly)

Returns the value of attribute js_ctx.



361
362
363
# File 'lib/homura/runtime/queue.rb', line 361

def js_ctx
  @js_ctx
end

#js_envObject (readonly)

Returns the value of attribute js_env.



361
362
363
# File 'lib/homura/runtime/queue.rb', line 361

def js_env
  @js_env
end

Instance Method Details

#aiObject



376
# File 'lib/homura/runtime/queue.rb', line 376

def ai; Cloudflare::Bindings.ai(env); end

#bucketObject



375
# File 'lib/homura/runtime/queue.rb', line 375

def bucket; env['cloudflare.BUCKET']; end

#cf_ctxObject



373
# File 'lib/homura/runtime/queue.rb', line 373

def cf_ctx; env['cloudflare.ctx']; end

#cf_envObject



372
# File 'lib/homura/runtime/queue.rb', line 372

def cf_env; env['cloudflare.env']; end

#d1Object



370
# File 'lib/homura/runtime/queue.rb', line 370

def d1;     env['cloudflare.DB'];     end

#dbObject



371
# File 'lib/homura/runtime/queue.rb', line 371

def db;     d1;                    end

#durable_object(name, id_or_name = nil) ⇒ Object



379
380
381
# File 'lib/homura/runtime/queue.rb', line 379

def durable_object(name, id_or_name = nil)
  Cloudflare::Bindings.durable_object(env, name, id_or_name)
end

#jobs_queueObject



378
# File 'lib/homura/runtime/queue.rb', line 378

def jobs_queue; env['cloudflare.QUEUE_JOBS']; end

#kvObject



374
# File 'lib/homura/runtime/queue.rb', line 374

def kv;     env['cloudflare.KV'];     end

#send_emailObject



377
# File 'lib/homura/runtime/queue.rb', line 377

def send_email; env['cloudflare.SEND_EMAIL']; end

#wait_until(promise) ⇒ Object

Hand a long-running promise to ctx.waitUntil. Mirrors the same helper in Sinatra::Scheduled’s ScheduledContext.



385
386
387
388
389
390
# File 'lib/homura/runtime/queue.rb', line 385

def wait_until(promise)
  return promise if @js_ctx.nil?
  js_ctx = @js_ctx
  `#{js_ctx}.waitUntil(#{promise})`
  promise
end