barbeque 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +44 -16
- data/lib/barbeque/configuration.rb +6 -1
- data/lib/barbeque/exception_handler.rb +29 -0
- data/lib/barbeque/version.rb +1 -1
- data/lib/barbeque/worker.rb +2 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c4a66c06a41f0c69f6b58200d649ecfa9864d32
|
4
|
+
data.tar.gz: a99fb1a847e6e661eafa78a087eaec2ad967ce62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0f78d987a36eea2f2ff15e5bdb0e7769ac36cfafae1fb7710b654385722d1090b7c348589c3e26b13d2f98daa2d0bc6a8e384236634b4d53d631e6c68a39959
|
7
|
+
data.tar.gz: 2fa5ea52ab2aab1d310da0ddf72090561169886d9f9fbd71273f7ac016ba36dec0e38b58d1d0d830617914fba925186ad29895cb76b7b3f768c4afa54bd820e7
|
data/README.md
CHANGED
@@ -1,29 +1,57 @@
|
|
1
1
|
# Barbeque [](https://travis-ci.org/cookpad/barbeque)
|
2
2
|
|
3
|
-
|
3
|
+
Job queue system to run job with Docker
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
<img src="https://raw.githubusercontent.com/cookpad/barbeque/master/doc/images/job_definitions.png" height="280px" />
|
6
|
+
<img src="https://raw.githubusercontent.com/cookpad/barbeque/master/doc/images/statistics.png" height="280px" />
|
7
7
|
|
8
|
-
##
|
9
|
-
Add this line to your application's Gemfile:
|
8
|
+
## Project Status
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
```
|
10
|
+
Barbeque is under development but already used on production at Cookpad.
|
11
|
+
Documentation and open-sourcing plugins are work in progress.
|
14
12
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
## What's Barbeque?
|
14
|
+
|
15
|
+
Barbeque is a job queue system that consists of:
|
16
|
+
|
17
|
+
- Web console to manage jobs
|
18
|
+
- Web API to queue a job
|
19
|
+
- Worker to execute a job
|
20
|
+
|
21
|
+
A job for Barbeque is a command you configured on web console.
|
22
|
+
A message serialized by JSON and a job name are given to the command when performed.
|
23
|
+
In Barbeque worker, they are done on Docker container.
|
24
|
+
|
25
|
+
## Why Barbeque?
|
26
|
+
|
27
|
+
- You can achieve job-level auto scaling using tools like [Amazon ECS](https://aws.amazon.com/ecs/) and [EC2 Auto Scaling group](https://aws.amazon.com/autoscaling/)
|
28
|
+
- It requires a plugin to run job with ECS, but it's not open-sourced for now
|
29
|
+
- You don't have to manage infrastructure for each application like Resque or Sidekiq
|
30
|
+
|
31
|
+
For details, see [Scalable Job Queue System Built with Docker // Speaker Deck](https://speakerdeck.com/k0kubun/scalable-job-queue-system-built-with-docker).
|
32
|
+
|
33
|
+
## Deployment
|
34
|
+
|
35
|
+
### Web API & console
|
36
|
+
|
37
|
+
Install barbeque.gem to an empty Rails app and mount `Barbeque::Engine`.
|
38
|
+
And deploy it as you like.
|
39
|
+
|
40
|
+
You also need to prepare MySQL, Amazon SQS and Amazon S3.
|
41
|
+
|
42
|
+
### Worker
|
19
43
|
|
20
|
-
Or install it yourself as:
|
21
44
|
```bash
|
22
|
-
$
|
45
|
+
$ rake barbeque:worker BARBEQUE_QUEUE=default
|
23
46
|
```
|
24
47
|
|
25
|
-
##
|
26
|
-
|
48
|
+
## Usage
|
49
|
+
|
50
|
+
Web API documentation is available at [doc/toc.md](./doc/toc.md).
|
51
|
+
|
52
|
+
### Ruby
|
53
|
+
|
54
|
+
[barbeque\_client.gem](https://github.com/cookpad/barbeque_client) has API client and ActiveJob integration.
|
27
55
|
|
28
56
|
## License
|
29
57
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
@@ -4,6 +4,11 @@ require 'hashie'
|
|
4
4
|
|
5
5
|
module Barbeque
|
6
6
|
module Configuration
|
7
|
+
DEFAULT_CONFIG = {
|
8
|
+
'exception_handler' => 'RailsLogger',
|
9
|
+
'runner' => 'Docker',
|
10
|
+
}
|
11
|
+
|
7
12
|
def config
|
8
13
|
@config ||= build_config
|
9
14
|
end
|
@@ -11,7 +16,7 @@ module Barbeque
|
|
11
16
|
def build_config
|
12
17
|
filename = Rails.root.join('config', 'barbeque.yml').to_s
|
13
18
|
hash = YAML.load(ERB.new(File.read(filename)).result)
|
14
|
-
Hashie::Mash.new(hash[Rails.env])
|
19
|
+
Hashie::Mash.new(DEFAULT_CONFIG.merge(hash[Rails.env]))
|
15
20
|
end
|
16
21
|
end
|
17
22
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'barbeque/configuration'
|
2
|
+
|
3
|
+
module Barbeque
|
4
|
+
module ExceptionHandler
|
5
|
+
class << self
|
6
|
+
def handle_exception(e)
|
7
|
+
handler.handle_exception(e)
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def handler
|
13
|
+
@handler ||= const_get(Barbeque.config.exception_handler, false)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
module RailsLogger
|
18
|
+
def self.handle_exception(e)
|
19
|
+
Rails.logger.error("#{e.inspect}\n#{e.backtrace.join("\n")}")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
module Raven
|
24
|
+
def self.handle_exception(e)
|
25
|
+
::Raven.capture_exception(e)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/barbeque/version.rb
CHANGED
data/lib/barbeque/worker.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'barbeque/exception_handler'
|
1
2
|
require 'barbeque/message_handler'
|
2
3
|
require 'barbeque/message_queue'
|
3
4
|
require 'serverengine'
|
@@ -53,8 +54,7 @@ module Barbeque
|
|
53
54
|
handler = MessageHandler.const_get(message.type, false)
|
54
55
|
handler.new(message: message, job_queue: message_queue.job_queue).run
|
55
56
|
rescue => e
|
56
|
-
|
57
|
-
Rails.logger.fatal("[ERROR] #{e.inspect}\n#{e.backtrace.join("\n")}")
|
57
|
+
Barbeque::ExceptionHandler.handle_exception(e)
|
58
58
|
end
|
59
59
|
|
60
60
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: barbeque
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takashi Kokubun
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-09-
|
11
|
+
date: 2016-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: adminlte2-rails
|
@@ -262,7 +262,7 @@ dependencies:
|
|
262
262
|
- - ">="
|
263
263
|
- !ruby/object:Gem::Version
|
264
264
|
version: '0'
|
265
|
-
description: Job queue
|
265
|
+
description: Job queue system to run job with Docker
|
266
266
|
email:
|
267
267
|
- takashi-kokubun@cookpad.com
|
268
268
|
executables: []
|
@@ -348,6 +348,7 @@ files:
|
|
348
348
|
- lib/barbeque/configuration.rb
|
349
349
|
- lib/barbeque/docker_image.rb
|
350
350
|
- lib/barbeque/engine.rb
|
351
|
+
- lib/barbeque/exception_handler.rb
|
351
352
|
- lib/barbeque/execution_log.rb
|
352
353
|
- lib/barbeque/message.rb
|
353
354
|
- lib/barbeque/message/base.rb
|
@@ -388,5 +389,5 @@ rubyforge_project:
|
|
388
389
|
rubygems_version: 2.5.1
|
389
390
|
signing_key:
|
390
391
|
specification_version: 4
|
391
|
-
summary: Job queue
|
392
|
+
summary: Job queue system to run job with Docker
|
392
393
|
test_files: []
|