elastic_beans 0.13.0.alpha5 → 0.13.0.alpha6
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 +19 -0
- data/lib/elastic_beans/rack/exec.rb +1 -1
- data/lib/elastic_beans/rack/health_check.rb +43 -0
- data/lib/elastic_beans/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 664c74c9be1710fc97174af435e1cc4e67db6c06
|
4
|
+
data.tar.gz: eb6e2d1028c9a5ca81d0ec6295dd127255f567a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7890ae4cbe0d96b740cc3348425ce17a49e64766023a2693977198c3f34948803fbf1dd8e7d6fc4bfd779ee0405daabbe5d1dd1fc11fc2eb24f8061af13233ca
|
7
|
+
data.tar.gz: dd413fc4e2ffb0b9a74da493fc87918352cc24d643d58491d3cedefd3625bd19ab19f8903b3cd66fc19c2cb24e26fd52448912af5bcaa02cfd8568664f733f0c
|
data/README.md
CHANGED
@@ -79,6 +79,25 @@ Elastic Beans exposes the classes it uses to manage Elastic Beanstalk so you can
|
|
79
79
|
|
80
80
|
AWS SDK clients must be passed into Elastic Beans constructors.
|
81
81
|
|
82
|
+
### Health check
|
83
|
+
|
84
|
+
Elastic Beanstalk worker environments have an internal health check performed on the instance that does not support HTTPS.
|
85
|
+
Elastic Beans includes a health check middleware to respond to `GET /` requests originating from `localhost`.
|
86
|
+
|
87
|
+
In `config/initializers/elastic_beans.rb`, add the middleware into your stack, below forcing HTTPS:
|
88
|
+
|
89
|
+
require "elastic_beans/rack/health_check"
|
90
|
+
|
91
|
+
if Rails.configuration.force_ssl
|
92
|
+
Rails.configuration.middleware.insert_before(
|
93
|
+
ActionDispatch::SSL,
|
94
|
+
ElasticBeans::Rack::HealthCheck,
|
95
|
+
logger: Rails.logger,
|
96
|
+
)
|
97
|
+
else
|
98
|
+
Rails.configuration.middleware.use(ElasticBeans::Rack::HealthCheck, logger: Rails.logger)
|
99
|
+
end
|
100
|
+
|
82
101
|
### Periodic tasks
|
83
102
|
|
84
103
|
Elastic Beanstalk [supports periodic tasks][periodic] by sending a POST request to an endpoint of your application.
|
@@ -7,7 +7,7 @@ module ElasticBeans
|
|
7
7
|
# ElasticBeans::Application#enqueue_command.
|
8
8
|
# Load it in your Rails application so the "scheduler" environment enqueues commands for execution.
|
9
9
|
#
|
10
|
-
# Only accepts localhost requests from
|
10
|
+
# Only accepts localhost requests from +aws-sqsd+.
|
11
11
|
class Exec
|
12
12
|
FAILURE = ['500', {'Content-type' => 'text/plain'}, [""]]
|
13
13
|
SUCCESS = ['200', {'Content-type' => 'text/plain'}, [""]]
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require "logger"
|
2
|
+
require "action_dispatch"
|
3
|
+
|
4
|
+
module ElasticBeans
|
5
|
+
module Rack
|
6
|
+
# A middleware that returns 200 OK to +aws-sqsd+'s health check, which does not support HTTPS.
|
7
|
+
# Load it in your Rails application so non-webserver environments are considered healthy.
|
8
|
+
#
|
9
|
+
# Only accepts localhost requests to +GET+ the root path.
|
10
|
+
class HealthCheck
|
11
|
+
SUCCESS = ['200', {'Content-type' => 'text/plain'}, [""]]
|
12
|
+
|
13
|
+
def initialize(app, args={})
|
14
|
+
@app = app
|
15
|
+
@logger = args[:logger] || Logger.new("/dev/null")
|
16
|
+
end
|
17
|
+
|
18
|
+
def call(env)
|
19
|
+
request = ActionDispatch::Request.new(env)
|
20
|
+
if enabled? && health_request?(request)
|
21
|
+
logger.debug { "[elastic_beans] Healthy response to local client" }
|
22
|
+
return SUCCESS
|
23
|
+
end
|
24
|
+
|
25
|
+
logger.debug { "[elastic_beans] skipped health request: #{request.path}" }
|
26
|
+
app.call(env)
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
attr_reader :app, :logger
|
32
|
+
|
33
|
+
def enabled?
|
34
|
+
worker_disabled = ENV['DISABLE_SQS_CONSUMER'] || 'false'
|
35
|
+
worker_disabled == 'false'
|
36
|
+
end
|
37
|
+
|
38
|
+
def health_request?(request)
|
39
|
+
request.local? && request.method == 'GET' && request.path == '/'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elastic_beans
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.13.0.
|
4
|
+
version: 0.13.0.alpha6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Stegman
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -232,6 +232,7 @@ files:
|
|
232
232
|
- lib/elastic_beans/exec/sqs_consumer.rb
|
233
233
|
- lib/elastic_beans/network.rb
|
234
234
|
- lib/elastic_beans/rack/exec.rb
|
235
|
+
- lib/elastic_beans/rack/health_check.rb
|
235
236
|
- lib/elastic_beans/scheduler/ebextension.yml
|
236
237
|
- lib/elastic_beans/ssh.rb
|
237
238
|
- lib/elastic_beans/ui.rb
|