slack-ruby-bot-server 0.7.0 → 0.8.0
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/.rubocop_todo.yml +6 -1
- data/CHANGELOG.md +15 -10
- data/README.md +1 -1
- data/UPGRADING.md +8 -0
- data/lib/slack-ruby-bot-server.rb +1 -1
- data/lib/slack-ruby-bot-server/ping.rb +36 -9
- data/lib/slack-ruby-bot-server/service.rb +1 -0
- data/lib/slack-ruby-bot-server/version.rb +1 -1
- data/sample_apps/sample_app_activerecord/config.ru +0 -6
- data/sample_apps/sample_app_mongoid/config.ru +0 -6
- data/slack-ruby-bot-server.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c2baab12040f4100e3fb8ece5469b8b4ed6616f2
|
|
4
|
+
data.tar.gz: 45d3c6c0c456033a0a1c799ab71c298b3b7d72b6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fced549dc1ec1f687223b076c6c73d50e5d14fd1976dcf007f392beb8b9e7f0b2c0519d011acbd1d20db7a86e3cee58b3974f0f444c1013d5edb10e8501f593e
|
|
7
|
+
data.tar.gz: 383451e38ac282f35ee977179a2e20a1df09ba40664cb2c38dd1a28d5fa1cc28bbf31de19c0bdfe2682df4d7f003d788983927f5973d0fbcc8356add93475f2a
|
data/.rubocop_todo.yml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# This configuration was generated by
|
|
2
2
|
# `rubocop --auto-gen-config`
|
|
3
|
-
# on 2018-08
|
|
3
|
+
# on 2018-09-08 18:09:56 -0400 using RuboCop version 0.58.2.
|
|
4
4
|
# The point is for the user to remove these configuration records
|
|
5
5
|
# one by one as the offenses are removed from the code base.
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
|
@@ -16,6 +16,11 @@ Layout/IndentHeredoc:
|
|
|
16
16
|
- 'sample_apps/sample_app_activerecord/commands/help.rb'
|
|
17
17
|
- 'sample_apps/sample_app_mongoid/commands/help.rb'
|
|
18
18
|
|
|
19
|
+
# Offense count: 1
|
|
20
|
+
Lint/HandleExceptions:
|
|
21
|
+
Exclude:
|
|
22
|
+
- 'lib/slack-ruby-bot-server/ping.rb'
|
|
23
|
+
|
|
19
24
|
# Offense count: 3
|
|
20
25
|
# Configuration parameters: Blacklist.
|
|
21
26
|
# Blacklist: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$))
|
data/CHANGELOG.md
CHANGED
|
@@ -1,56 +1,61 @@
|
|
|
1
1
|
### Changelog
|
|
2
2
|
|
|
3
|
-
#### 0.
|
|
3
|
+
#### 0.8.0 (2018/9/8)
|
|
4
|
+
|
|
5
|
+
* [#75](https://github.com/slack-ruby/slack-ruby-bot-server/pull/75): Default to `async-websocket` instead of `celluloid-io` - [@dblock](https://github.com/dblock).
|
|
6
|
+
* [#76](https://github.com/slack-ruby/slack-ruby-bot-server/pull/76): Adjust wait time on restart on Slack::Web::Api::Errors::TooManyRequestsError - [@dblock](https://github.com/dblock).
|
|
7
|
+
|
|
8
|
+
#### 0.7.0 (2018/8/22)
|
|
4
9
|
|
|
5
10
|
* [#60](https://github.com/slack-ruby/slack-ruby-bot-server/pull/60): Log caught Standard::Error backtrace at debug-level - [@alexagranov](https://github.com/alexagranov).
|
|
6
11
|
* [#65](https://github.com/slack-ruby/slack-ruby-bot-server/pull/65): Updated Capybara and selenium-webdriver - [@dblock](https://github.com/dblock).
|
|
7
12
|
* [#67](https://github.com/slack-ruby/slack-ruby-bot-server/pull/67): Only load the OTR::ActiveRecord::ConnectionManagement middleware when the OTR module is included. This module isn't needed when using Rails - [@darbyfrey](https://github.com/darbyfrey).
|
|
8
13
|
* [#74](https://github.com/slack-ruby/slack-ruby-bot-server/pull/74): Added ping worker, will restart offline bots - [@dblock](https://github.com/dblock).
|
|
9
14
|
|
|
10
|
-
#### 0.6.1 (3/29
|
|
15
|
+
#### 0.6.1 (2017/3/29)
|
|
11
16
|
|
|
12
17
|
* [#54](https://github.com/slack-ruby/slack-ruby-bot-server/pull/54): Removing one more Mongoid dependency when rescuing from _invoke - [@alexagranov](https://github.com/alexagranov).
|
|
13
18
|
* [#53](https://github.com/slack-ruby/slack-ruby-bot-server/pull/53): No need for `otr-activerecord` if using activerecord under Rails - [@alexagranov](https://github.com/alexagranov).
|
|
14
19
|
|
|
15
|
-
#### 0.6.0 (3/12
|
|
20
|
+
#### 0.6.0 (2017/3/12)
|
|
16
21
|
|
|
17
22
|
* [#38](https://github.com/slack-ruby/slack-ruby-bot-server/issues/7): Added ActiveRecord support - [@zachfeldman](https://github.com/zachfeldman), [@spencerldixon](https://github.com/spencerldixon), [@dblock](https://github.com/dblock).
|
|
18
23
|
* [#45](https://github.com/slack-ruby/slack-ruby-bot-server/pull/45): Updated grape-roar to 0.4.0 - [@swalberg](https://github.com/swalberg).
|
|
19
24
|
* [#49](https://github.com/slack-ruby/slack-ruby-bot-server/pull/49): Run tests in the sample apps part of CI - [@dblock](https://github.com/dblock).
|
|
20
25
|
|
|
21
|
-
#### 0.5.0 (2/9
|
|
26
|
+
#### 0.5.0 (2017/2/9)
|
|
22
27
|
|
|
23
28
|
* [#43](https://github.com/slack-ruby/slack-ruby-bot-server/pull/43): Fix: `cannot load kaminari/grape` - [@dblock](https://github.com/dblock).
|
|
24
29
|
* [#43](https://github.com/slack-ruby/slack-ruby-bot-server/pull/43): Fix: `undefined method '[]' for nil:NilClass` in APIs - [@dblock](https://github.com/dblock).
|
|
25
30
|
* [#28](https://github.com/slack-ruby/slack-ruby-bot-server/pull/28): Use slack-ruby-danger gem - [@dblock](https://github.com/dblock).
|
|
26
31
|
* [#31](https://github.com/slack-ruby/slack-ruby-bot-server/pull/31): Adds MONGODB_URI as environment variable for MongoDB - [@corprew](https://github.com/corprew).
|
|
27
32
|
|
|
28
|
-
#### 0.4.0 (8/29
|
|
33
|
+
#### 0.4.0 (2016/8/29)
|
|
29
34
|
|
|
30
35
|
* [#25](https://github.com/slack-ruby/slack-ruby-bot-server/pull/25): Added [danger](http://danger.systems), PR linting - [@dblock](https://github.com/dblock).
|
|
31
36
|
* The `reset` and `resetting` callbacks have been removed - [@dblock](https://github.com/dblock).
|
|
32
37
|
* Callbacks receive `team` and `error`, but no longer `server` - [@dblock](https://github.com/dblock).
|
|
33
38
|
* [#23](https://github.com/slack-ruby/slack-ruby-bot-server/issues/23): Fix: server-side removal of bot doesn't deactivate it - [@dblock](https://github.com/dblock).
|
|
34
39
|
|
|
35
|
-
#### 0.3.1 (7/10
|
|
40
|
+
#### 0.3.1 (2016/7/10)
|
|
36
41
|
|
|
37
42
|
* [#22](https://github.com/slack-ruby/slack-ruby-bot-server/issues/22): Subclassing `SlackRubyBotServer::App` creates an `.instance` of child class - [@dblock](https://github.com/dblock).
|
|
38
43
|
|
|
39
|
-
#### 0.3.0 (7/4
|
|
44
|
+
#### 0.3.0 (2016/7/4)
|
|
40
45
|
|
|
41
46
|
* Specify the server class via `SlackRubyBotServer.configure`, default is `SlackRubyBotServer::Server` - [@dblock](https://github.com/dblock).
|
|
42
47
|
* Added service management lifecycle callbacks when a new team is registered, deactivated, etc - [@dblock](https://github.com/dblock).
|
|
43
48
|
|
|
44
|
-
#### 0.2.0 (6/21
|
|
49
|
+
#### 0.2.0 (2016/6/21)
|
|
45
50
|
|
|
46
51
|
* Relaxed dependency versions, notably enabling grape 0.16.2 and Swagger 0.21.0 that uses Swagger 2.0 spec - [@dblock](https://github.com/dblock).
|
|
47
52
|
* [#21](https://github.com/slack-ruby/slack-ruby-bot-server/issues/21): Fix: pass additional options through into `SlackRubyBot::Server` - [@dblock](https://github.com/dblock).
|
|
48
53
|
|
|
49
|
-
#### 0.1.1 (6/4
|
|
54
|
+
#### 0.1.1 (2016/6/4)
|
|
50
55
|
|
|
51
56
|
* [#14](https://github.com/slack-ruby/slack-ruby-bot-server/pull/14): Moved config/initializers into the library - [@tmsrjs](https://github.com/tmsrjs).
|
|
52
57
|
|
|
53
|
-
#### 0.1.0 (6/1
|
|
58
|
+
#### 0.1.0 (2016/6/1)
|
|
54
59
|
|
|
55
60
|
* Initial public release - [@dblock](https://github.com/dblock).
|
|
56
61
|
* Renamed slack-bot-server to slack-ruby-bot-server - [@dblock](https://github.com/dblock).
|
data/README.md
CHANGED
|
@@ -13,7 +13,7 @@ A library that contains a [Grape](http://github.com/ruby-grape/grape) API servin
|
|
|
13
13
|
|
|
14
14
|
### Stable Release
|
|
15
15
|
|
|
16
|
-
You're reading the documentation for the **stable** release of slack-ruby-bot-server,
|
|
16
|
+
You're reading the documentation for the **stable** release of slack-ruby-bot-server, v0.8.0. See [UPGRADING](UPGRADING.md) when upgrading from an older version.
|
|
17
17
|
|
|
18
18
|
### Try Me
|
|
19
19
|
|
data/UPGRADING.md
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
Upgrading Slack-Ruby-Bot-Server
|
|
2
2
|
===============================
|
|
3
3
|
|
|
4
|
+
### Upgrading to >= 0.8.0
|
|
5
|
+
|
|
6
|
+
### Different Asynchronous I/O Library
|
|
7
|
+
|
|
8
|
+
The library now uses [async-websocket](https://github.com/socketry/async-websocket) instead of [celluloid-io](https://github.com/celluloid/celluloid-io). If your application is built on Celluloid you may need to make changes and use `Async::Reactor.run` and the likes.
|
|
9
|
+
|
|
10
|
+
See [#75](https://github.com/slack-ruby/slack-ruby-bot-server/pull/75) for more information.
|
|
11
|
+
|
|
4
12
|
### Upgrading to >= 0.7.0
|
|
5
13
|
|
|
6
14
|
#### New Ping Worker
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
require 'active_support/core_ext/string/filters'
|
|
2
|
+
|
|
1
3
|
module SlackRubyBotServer
|
|
2
4
|
class Ping
|
|
3
|
-
include Celluloid
|
|
4
|
-
|
|
5
5
|
attr_reader :client
|
|
6
6
|
attr_reader :options
|
|
7
7
|
attr_reader :error_count
|
|
@@ -13,16 +13,29 @@ module SlackRubyBotServer
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def start!
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
::Async::Reactor.run do |task|
|
|
17
|
+
run(task)
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
private
|
|
22
22
|
|
|
23
|
+
def run(task)
|
|
24
|
+
logger.debug "PING: #{owner}, every #{ping_interval} second(s)"
|
|
25
|
+
loop do
|
|
26
|
+
task.sleep ping_interval
|
|
27
|
+
break unless check!
|
|
28
|
+
end
|
|
29
|
+
logger.debug "PING: #{owner}, done."
|
|
30
|
+
rescue StandardError => e
|
|
31
|
+
logger.error e
|
|
32
|
+
raise e
|
|
33
|
+
end
|
|
34
|
+
|
|
23
35
|
def check!
|
|
24
36
|
if online?
|
|
25
37
|
@error_count = 0
|
|
38
|
+
true
|
|
26
39
|
else
|
|
27
40
|
down!
|
|
28
41
|
end
|
|
@@ -30,9 +43,11 @@ module SlackRubyBotServer
|
|
|
30
43
|
case e.message
|
|
31
44
|
when 'account_inactive', 'invalid_auth' then
|
|
32
45
|
logger.warn "Error pinging team #{owner.id}: #{e.message}, terminating."
|
|
33
|
-
|
|
46
|
+
false
|
|
34
47
|
else
|
|
35
|
-
|
|
48
|
+
message = e.message.truncate(24, separator: "\n", omission: '...')
|
|
49
|
+
logger.warn "Error pinging team #{owner.id}: #{message}."
|
|
50
|
+
true
|
|
36
51
|
end
|
|
37
52
|
end
|
|
38
53
|
|
|
@@ -51,14 +66,22 @@ module SlackRubyBotServer
|
|
|
51
66
|
def down!
|
|
52
67
|
logger.warn "DOWN: #{owner}, #{retries_left} #{retries_left == 1 ? 'retry' : 'retries'} left"
|
|
53
68
|
@error_count += 1
|
|
54
|
-
return if retries_left?
|
|
69
|
+
return true if retries_left?
|
|
55
70
|
restart!
|
|
71
|
+
false
|
|
56
72
|
end
|
|
57
73
|
|
|
58
74
|
def restart!
|
|
59
75
|
logger.warn "RESTART: #{owner}"
|
|
60
|
-
|
|
61
|
-
|
|
76
|
+
begin
|
|
77
|
+
connection.close
|
|
78
|
+
rescue Async::Wrapper::Cancelled
|
|
79
|
+
# ignore, from connection.close
|
|
80
|
+
end
|
|
81
|
+
driver.close
|
|
82
|
+
driver.emit(:close, WebSocket::Driver::CloseEvent.new(1001, 'bot offline'))
|
|
83
|
+
rescue StandardError => e
|
|
84
|
+
logger.warn "Error restarting team #{owner.id}: #{e.message}."
|
|
62
85
|
end
|
|
63
86
|
|
|
64
87
|
def ping_interval
|
|
@@ -85,6 +108,10 @@ module SlackRubyBotServer
|
|
|
85
108
|
socket.instance_variable_get(:@driver) if socket
|
|
86
109
|
end
|
|
87
110
|
|
|
111
|
+
def connection
|
|
112
|
+
driver.instance_variable_get(:@socket) if driver
|
|
113
|
+
end
|
|
114
|
+
|
|
88
115
|
def logger
|
|
89
116
|
@logger ||= begin
|
|
90
117
|
STDOUT.sync = true
|
|
@@ -97,6 +97,7 @@ module SlackRubyBotServer
|
|
|
97
97
|
logger.error "#{team.name}: #{e.message}, team will be deactivated."
|
|
98
98
|
deactivate!(team)
|
|
99
99
|
else
|
|
100
|
+
wait = e.retry_after if e.is_a?(Slack::Web::Api::Errors::TooManyRequestsError)
|
|
100
101
|
logger.error "#{team.name}: #{e.message}, restarting in #{wait} second(s)."
|
|
101
102
|
sleep(wait)
|
|
102
103
|
start_server! team, server, [wait * 2, 60].min
|
|
@@ -7,12 +7,6 @@ require 'yaml'
|
|
|
7
7
|
|
|
8
8
|
ActiveRecord::Base.establish_connection(YAML.load_file('config/postgresql.yml')[ENV['RACK_ENV']])
|
|
9
9
|
|
|
10
|
-
if ENV['RACK_ENV'] == 'development'
|
|
11
|
-
puts 'Loading NewRelic in developer mode ...'
|
|
12
|
-
require 'new_relic/rack/developer_mode'
|
|
13
|
-
use NewRelic::Rack::DeveloperMode
|
|
14
|
-
end
|
|
15
|
-
|
|
16
10
|
NewRelic::Agent.manual_start
|
|
17
11
|
|
|
18
12
|
SlackRubyBotServer::App.instance.prepare!
|
|
@@ -6,12 +6,6 @@ require_relative 'commands'
|
|
|
6
6
|
|
|
7
7
|
Mongoid.load!(File.expand_path('config/mongoid.yml', __dir__), ENV['RACK_ENV'])
|
|
8
8
|
|
|
9
|
-
if ENV['RACK_ENV'] == 'development'
|
|
10
|
-
puts 'Loading NewRelic in developer mode ...'
|
|
11
|
-
require 'new_relic/rack/developer_mode'
|
|
12
|
-
use NewRelic::Rack::DeveloperMode
|
|
13
|
-
end
|
|
14
|
-
|
|
15
9
|
NewRelic::Agent.manual_start
|
|
16
10
|
|
|
17
11
|
SlackRubyBotServer::App.instance.prepare!
|
|
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
|
14
14
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec)/}) }
|
|
15
15
|
spec.require_paths = ['lib']
|
|
16
16
|
|
|
17
|
-
spec.add_dependency '
|
|
17
|
+
spec.add_dependency 'async-websocket'
|
|
18
18
|
spec.add_dependency 'foreman'
|
|
19
19
|
spec.add_dependency 'grape'
|
|
20
20
|
spec.add_dependency 'grape-roar', '>= 0.4.0'
|
metadata
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: slack-ruby-bot-server
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Daniel Doubrovkine
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-08
|
|
11
|
+
date: 2018-09-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: async-websocket
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
@@ -295,7 +295,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
295
295
|
version: '0'
|
|
296
296
|
requirements: []
|
|
297
297
|
rubyforge_project:
|
|
298
|
-
rubygems_version: 2.6.
|
|
298
|
+
rubygems_version: 2.6.14
|
|
299
299
|
signing_key:
|
|
300
300
|
specification_version: 4
|
|
301
301
|
summary: A Grape API serving a Slack bot to multiple teams.
|