Module: WarpCore
- Defined in:
- lib/warpcore/version.rb,
lib/warpcore/cache.rb,
lib/warpcore/config.rb,
lib/warpcore/sidekiq.rb,
lib/warpcore/dispatch.rb
Overview
This module provides a set of classes and components to build large scale, scalable and easier to maintain ruby-based applications with Parse.
Defined Under Namespace
Classes: Cache, Env, ParallelDispatchQueue, RedisPoolInstance, SerialDispatchQueue
Constant Summary collapse
- VERSION =
Version number
"0.2.2"
Class Method Summary collapse
-
.async(type = :serial) ⇒ Object
Helper method to run a block on a background thread.
- .cache(key, opts = {}) ⇒ Object
-
.delay_by(seconds, type = :serial) ⇒ Object
Helper method to run a block on a background thread.
-
.dispatch(worker_name, *args) ⇒ Object
Asynchronously dispatch a Sidekiq worker with the provided arguments.
-
.dispatch_in(worker_name, *args) ⇒ Object
Asynchronously dispatch a Sidekiq worker at a later time with the provided arguments.
-
.dispatch_sync(worker_name, *args) ⇒ Object
Synchronously dispatch a Sidekiq worker with the provided arguments.
-
.redis ⇒ RedisPoolInstance
A usable redis instance shared by Sidekiq.
Class Method Details
.async(type = :serial) ⇒ Object
Helper method to run a block on a background thread.
29 30 31 32 33 34 35 36 |
# File 'lib/warpcore/dispatch.rb', line 29 def self.async(type = :serial) raise "You need to pass a block to async." unless block_given? if type == :parallel WarpCore::ParallelDispatchQueue.perform_async Proc.new else WarpCore::SerialDispatchQueue.perform_async Proc.new end end |
.cache(key, opts = {}) ⇒ Object
7 8 9 10 11 12 13 |
# File 'lib/warpcore/cache.rb', line 7 def self.cache(key,opts = {}) if block_given? WarpCore::Cache.get( key, opts, Proc.new ) else WarpCore::Cache.get( key, opts ) end end |
.delay_by(seconds, type = :serial) ⇒ Object
Helper method to run a block on a background thread.
42 43 44 45 46 47 48 49 |
# File 'lib/warpcore/dispatch.rb', line 42 def self.delay_by(seconds, type = :serial) raise "You need to pass a block to delay_by." unless block_given? if type == :parallel WarpCore::ParallelDispatchQueue.perform_in seconds.to_i, Proc.new else WarpCore::SerialDispatchQueue.perform_in seconds.to_i, Proc.new end end |
.dispatch(worker_name, *args) ⇒ Object
Asynchronously dispatch a Sidekiq worker with the provided arguments. This is equivalent to calling the worker directly with perform_async.
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/warpcore/sidekiq.rb', line 19 def self.dispatch(worker_name, *args) klass = worker_name.constantize if klass.respond_to?(:perform_async) puts "=> [Dispatch:Async] #{worker_name}" return klass.perform_async(*args) else warn "Dispatched #{worker_name} not a valid Sidekiq worker." nil end rescue NameError => e puts "Worker [#{worker_name}] not defined." nil end |
.dispatch_in(worker_name, *args) ⇒ Object
Asynchronously dispatch a Sidekiq worker at a later time with the provided arguments. This is equivalent to calling the worker directly with perform_in.
40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/warpcore/sidekiq.rb', line 40 def self.dispatch_in(worker_name, *args) klass = worker_name.constantize if klass.respond_to?(:perform_async) puts "=> [Dispatch:Delay] #{worker_name}" return klass.perform_in(*args) else warn "Dispatched #{worker_name} not a valid Sidekiq worker." nil end rescue NameError => e puts "Worker [#{worker_name}] not defined." nil end |
.dispatch_sync(worker_name, *args) ⇒ Object
Synchronously dispatch a Sidekiq worker with the provided arguments. This is equivalent to instantiating the worker instance directly and calling perform on it.
61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/warpcore/sidekiq.rb', line 61 def self.dispatch_sync(worker_name, *args) klass = worker_name.constantize object = klass.new if object.respond_to?(:perform) puts "=> [Dispatch:Sync] #{worker_name}" return object.perform(*args) else warn "Perform #{worker_name} not a valid Sidekiq worker." nil end rescue NameError => e puts "Worker [#{worker_name}] not defined." nil end |
.redis ⇒ RedisPoolInstance
Returns a usable redis instance shared by Sidekiq.
9 10 11 |
# File 'lib/warpcore/sidekiq.rb', line 9 def self.redis WarpCore::RedisPoolInstance.new end |