webhookdb 1.0.0 → 1.0.1
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/lib/webhookdb/async/autoscaler.rb +31 -6
- data/lib/webhookdb/heroku.rb +1 -1
- data/lib/webhookdb/tasks/release.rb +6 -0
- data/lib/webhookdb/version.rb +1 -1
- data/lib/webhookdb.rb +18 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd104a25c13b1c3d4a9500bdb618c2f704692c26a09a307eb926cf87bcb2befe
|
4
|
+
data.tar.gz: e61ed8994471efa0ab7ab448cf12b68cf4cbb44152df3e98024da3ffa1985c5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a0839a974acd4cc643501fe544461e0848f3ee01e1e2b47bcb325dba10636556d15bb597532adb7039caa2dd4b8cf9be6fe487a4cfa211bdd82505dda1c3cc2
|
7
|
+
data.tar.gz: 4b619d15175fefaea0eafe39a57aa127c2a1b41beadf5f87fb7586e233170f30c51c02b4e20aa4701e695a42031459d9b1f11fb2ddae4ff1aa8f3d94a98aa4ee
|
@@ -9,7 +9,7 @@ module Webhookdb::Async::Autoscaler
|
|
9
9
|
include Appydays::Configurable
|
10
10
|
include Appydays::Loggable
|
11
11
|
|
12
|
-
AVAILABLE_PROVIDERS = ["heroku"].freeze
|
12
|
+
AVAILABLE_PROVIDERS = ["heroku", "fake"].freeze
|
13
13
|
|
14
14
|
def self._check_provider!
|
15
15
|
return if AVAILABLE_PROVIDERS.include?(self.provider)
|
@@ -26,6 +26,8 @@ module Webhookdb::Async::Autoscaler
|
|
26
26
|
setting :max_additional_workers, 2
|
27
27
|
setting :latency_restored_threshold, 0
|
28
28
|
setting :hostname_regex, /^web\.1$/, convert: ->(s) { Regexp.new(s) }
|
29
|
+
setting :heroku_app_id_or_app_name, "", key: "HEROKU_APP_NAME"
|
30
|
+
setting :heroku_formation_id_or_formation_type, "worker"
|
29
31
|
|
30
32
|
after_configured do
|
31
33
|
self._check_provider!
|
@@ -35,19 +37,25 @@ module Webhookdb::Async::Autoscaler
|
|
35
37
|
class << self
|
36
38
|
def enabled? = self.enabled
|
37
39
|
|
38
|
-
def
|
39
|
-
raise "already started" unless @instance.nil?
|
40
|
+
def build_implementation
|
40
41
|
case self.provider
|
41
42
|
when "heroku"
|
42
43
|
opts = {heroku: Webhookdb::Heroku.client, max_additional_workers: self.max_additional_workers}
|
43
44
|
(opts[:app_id_or_app_name] = self.heroku_app_id_or_app_name) if
|
44
|
-
self.heroku_app_id_or_app_name
|
45
|
+
self.heroku_app_id_or_app_name.present?
|
45
46
|
(opts[:formation_id_or_formation_type] = self.heroku_formation_id_or_formation_type) if
|
46
|
-
self.heroku_formation_id_or_formation_type
|
47
|
-
|
47
|
+
self.heroku_formation_id_or_formation_type.present?
|
48
|
+
return Amigo::Autoscaler::Heroku.new(**opts)
|
49
|
+
when "fake"
|
50
|
+
return FakeImplementation.new
|
48
51
|
else
|
49
52
|
self._check_provider!
|
50
53
|
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def start
|
57
|
+
raise "already started" unless @instance.nil?
|
58
|
+
@impl = self.build_implementation
|
51
59
|
@instance = Amigo::Autoscaler.new(
|
52
60
|
poll_interval: self.poll_interval,
|
53
61
|
latency_threshold: self.latency_threshold,
|
@@ -81,4 +89,21 @@ module Webhookdb::Async::Autoscaler
|
|
81
89
|
self.logger.warn("high_latency_queues_resolved", depth:, duration:, scale_action:)
|
82
90
|
end
|
83
91
|
end
|
92
|
+
|
93
|
+
class FakeImplementation
|
94
|
+
attr_reader :scale_ups, :scale_downs
|
95
|
+
|
96
|
+
def initialize
|
97
|
+
@scale_ups = []
|
98
|
+
@scale_downs = []
|
99
|
+
end
|
100
|
+
|
101
|
+
def scale_up(*args)
|
102
|
+
@scale_ups << args
|
103
|
+
end
|
104
|
+
|
105
|
+
def scale_down(*args)
|
106
|
+
@scale_downs << args
|
107
|
+
end
|
108
|
+
end
|
84
109
|
end
|
data/lib/webhookdb/heroku.rb
CHANGED
@@ -14,7 +14,7 @@ class Webhookdb::Heroku
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.client
|
17
|
-
raise "
|
17
|
+
raise "WEBHOOKDB_HEROKU_OAUTH_TOKEN not set" if self.oauth_token.blank?
|
18
18
|
@client ||= PlatformAPI.connect_oauth(self.oauth_token)
|
19
19
|
return @client
|
20
20
|
end
|
@@ -22,6 +22,12 @@ module Webhookdb::Tasks
|
|
22
22
|
Rake::Task["specs:heroku_integration_step1"].invoke
|
23
23
|
end
|
24
24
|
end
|
25
|
+
|
26
|
+
desc "Print version info and exit"
|
27
|
+
task :version do
|
28
|
+
sha = Webhookdb::COMMIT[..8]
|
29
|
+
puts "#{sha} (#{Webhookdb::RELEASE}) - #{Webhookdb::RELEASE_CREATED_AT} - #{Webhookdb::RACK_ENV}"
|
30
|
+
end
|
25
31
|
end
|
26
32
|
end
|
27
33
|
end
|
data/lib/webhookdb/version.rb
CHANGED
data/lib/webhookdb.rb
CHANGED
@@ -22,6 +22,17 @@ Money.locale_backend = :i18n
|
|
22
22
|
Money.default_currency = "USD"
|
23
23
|
Money.rounding_mode = BigDecimal::ROUND_HALF_UP
|
24
24
|
|
25
|
+
module Appydays::Configurable
|
26
|
+
def self.fetch_env(keys, default=:__keyerror, env: ENV)
|
27
|
+
keys = [keys] unless keys.respond_to?(:to_ary)
|
28
|
+
keys.to_ary.each do |k|
|
29
|
+
return env.fetch(k) if env.key?(k)
|
30
|
+
end
|
31
|
+
raise KeyError, "no key found in env: #{keys}" if default == :__keyerror
|
32
|
+
return default
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
25
36
|
module Webhookdb
|
26
37
|
include Appydays::Loggable
|
27
38
|
include Appydays::Configurable
|
@@ -49,10 +60,13 @@ module Webhookdb
|
|
49
60
|
class RegressionModeSkip < StandardError; end
|
50
61
|
|
51
62
|
APPLICATION_NAME = "Webhookdb"
|
52
|
-
RACK_ENV =
|
53
|
-
COMMIT =
|
54
|
-
RELEASE =
|
55
|
-
RELEASE_CREATED_AT =
|
63
|
+
RACK_ENV = Appydays::Configurable.fetch_env(["RACK_ENV", "RUBY_ENV"], "development")
|
64
|
+
COMMIT = Appydays::Configurable.fetch_env(["COMMIT", "GIT_SHA", "HEROKU_SLUG_COMMIT"], "00000000")
|
65
|
+
RELEASE = Appydays::Configurable.fetch_env(["RELEASE", "GIT_REF", "HEROKU_RELEASE_VERSION"], "unknown-release")
|
66
|
+
RELEASE_CREATED_AT = Appydays::Configurable.fetch_env(
|
67
|
+
["RELEASE_CREATED_AT", "BUILT_AT", "HEROKU_RELEASE_CREATED_AT"],
|
68
|
+
Time.at(0).utc.iso8601,
|
69
|
+
)
|
56
70
|
INTEGRATION_TESTS_ENABLED = ENV.fetch("INTEGRATION_TESTS", false)
|
57
71
|
require "webhookdb/version"
|
58
72
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webhookdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WebhookDB
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|