antelopes 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/antelopes.rb +66 -0
  3. metadata +142 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e88bf96f54206dbee16ac32a93408d5e228d948c
4
+ data.tar.gz: f336c55853631cff7ee6440e091b87100ebc6402
5
+ SHA512:
6
+ metadata.gz: 426d2a3f03e65a6690e769e0a186173772c48ad302e4149f8b343a1064ec34ecd127b4097f5607aed37b1d257a67e48ee734c2e1950603de69719313076f7b5f
7
+ data.tar.gz: 2fce0e2754ddf088687c98758c64e07d0d9bdae16c012b6fa4d6e3a3a0acb91e824cb60e0c8c13ba646bf83e609b36530fac1da709f82f15e460f5ad2ca0ce89
data/lib/antelopes.rb ADDED
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'serverengine'
4
+ require 'connection_pool'
5
+ require 'redis'
6
+ require 'securerandom'
7
+ require 'json'
8
+
9
+ # Nice and smart background jobs.
10
+ #
11
+ # @since 0.0.1
12
+ module Antelopes
13
+ # Method to call to start the workers
14
+ #
15
+ # @since 0.0.1
16
+ def self.start
17
+ ::ServerEngine.create(Master, Looper, configuration).run
18
+ end
19
+
20
+ # Method to add a job to queue.
21
+ #
22
+ # @example Instance method call
23
+ # Antelopes.push('MyClass', method: :call, args: Hash[foo: 'bar'])
24
+ # # The worker will run the following code:
25
+ # MyClass.new.call(foo: 'bar')
26
+ #
27
+ # @example Class method call
28
+ # Antelopes.push('MyClass', class_method: :call, args: Hash[foo: 'bar'])
29
+ # # The worker will run the following code:
30
+ # MyClass.call(foo: 'bar')
31
+ #
32
+ # @param job_class [String] class of the job to perform
33
+ # @param method [Symbol] public method of the instance to call
34
+ # @param class_method [Symbol] public method of the class to call
35
+ # @param args [Hash] parameters for the method
36
+ #
37
+ # @since 0.0.1
38
+ def self.push(job_class, method: nil, class_method: nil, args: Hash[])
39
+ Pusher.new.call(class: job_class, method: method, class_method: class_method, args: args)
40
+ end
41
+
42
+ # Loopers configuration to pass to ServerEngine
43
+ #
44
+ # @since 0.0.1
45
+ # @todo Make it configurable via a configuration file or environment variables
46
+ def self.configuration
47
+ Hash[
48
+ worker_type: 'thread',
49
+ workers: 4,
50
+ supervisor: true,
51
+ enable_detach: true,
52
+ log: 'myserver.log',
53
+ pid_path: 'myserver.pid'
54
+ ]
55
+ end
56
+ end
57
+
58
+ require 'antelopes/redis'
59
+
60
+ require 'antelopes/master'
61
+ require 'antelopes/looper'
62
+ require 'antelopes/worker'
63
+ require 'antelopes/job'
64
+
65
+ require 'antelopes/pusher'
66
+ require 'antelopes/puller'
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: antelopes
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Marion Duprey
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-04-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: connection_pool
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: redis
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: serverengine
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">"
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest-reporters
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">"
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">"
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">"
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">"
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">"
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">"
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description:
112
+ email: titeiko@gmail.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - lib/antelopes.rb
118
+ homepage: https://github.com/titeiko/antelopes
119
+ licenses:
120
+ - MIT
121
+ metadata: {}
122
+ post_install_message:
123
+ rdoc_options: []
124
+ require_paths:
125
+ - lib
126
+ required_ruby_version: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '2.3'
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ requirements: []
137
+ rubyforge_project:
138
+ rubygems_version: 2.5.2
139
+ signing_key:
140
+ specification_version: 4
141
+ summary: Nice and smart background jobs
142
+ test_files: []