slack-ruby-bot-server 0.3.1 → 0.4.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/.travis.yml +16 -2
- data/CHANGELOG.md +21 -14
- data/Dangerfile +1 -0
- data/Gemfile +1 -0
- data/README.md +4 -6
- data/UPGRADING.md +23 -0
- data/lib/slack-ruby-bot-server/models/team.rb +2 -0
- data/lib/slack-ruby-bot-server/service.rb +25 -45
- data/lib/slack-ruby-bot-server/version.rb +1 -1
- data/sample_app/README.md +1 -0
- data/sample_app/config.ru +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1bd761a554a479830a8e142d3550c0ee9bf277dc
|
4
|
+
data.tar.gz: c0cf2c2735e222f9e5818a02dc8766e0fa7e7e9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d33bd339c7532d61bedc270d34284ccd481780d8c6594d70e9a63802066888e9ae6023eb138ba5d38573ce5ce591ca33c92f28e8c43fe04e6ccf07c2d436952a
|
7
|
+
data.tar.gz: 92c8bf07d7b922adc710d90855a381eb5a021c6e60aade96f6798d06be9e2dc97edae3bff1e645034c5989519289fac390834f728bfffb31cd0bc8f5948661cb
|
data/.travis.yml
CHANGED
@@ -1,9 +1,23 @@
|
|
1
|
-
rvm:
|
2
|
-
- 2.2.4
|
3
1
|
language: ruby
|
2
|
+
|
4
3
|
cache: bundler
|
4
|
+
|
5
5
|
services:
|
6
6
|
- mongodb
|
7
|
+
|
8
|
+
matrix:
|
9
|
+
include:
|
10
|
+
- rvm: 2.3.1
|
11
|
+
script:
|
12
|
+
- bundle exec danger
|
13
|
+
- rvm: 2.3.1
|
14
|
+
- rvm: 2.3.0
|
15
|
+
- rvm: ruby-head
|
16
|
+
- rvm: jruby-head
|
17
|
+
allow_failures:
|
18
|
+
- rvm: ruby-head
|
19
|
+
- rvm: jruby-head
|
20
|
+
|
7
21
|
before_install:
|
8
22
|
- "export DISPLAY=:99.0"
|
9
23
|
- "sh -e /etc/init.d/xvfb start"
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
### Changelog
|
2
2
|
|
3
|
+
#### 0.4.0 (8/29/2016)
|
4
|
+
|
5
|
+
* [#25](https://github.com/slack-ruby/slack-ruby-bot-server/pull/25): Added [danger](http://danger.systems), PR linting - [@dblock](https://github.com/dblock).
|
6
|
+
* The `reset` and `resetting` callbacks have been removed - [@dblock](https://github.com/dblock).
|
7
|
+
* Callbacks receive `team` and `error`, but no longer `server` - [@dblock](https://github.com/dblock).
|
8
|
+
* [#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).
|
9
|
+
|
3
10
|
#### 0.3.1 (7/10/2016)
|
4
11
|
|
5
|
-
* [#22](https://github.com/
|
12
|
+
* [#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).
|
6
13
|
|
7
14
|
#### 0.3.0 (7/4/2016)
|
8
15
|
|
@@ -12,23 +19,23 @@
|
|
12
19
|
#### 0.2.0 (6/21/2016)
|
13
20
|
|
14
21
|
* 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).
|
15
|
-
* [#21](https://github.com/
|
22
|
+
* [#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).
|
16
23
|
|
17
24
|
#### 0.1.1 (6/4/2016)
|
18
25
|
|
19
|
-
* [#14](https://github.com/
|
26
|
+
* [#14](https://github.com/slack-ruby/slack-ruby-bot-server/pull/14): Moved config/initializers into the library - [@tmsrjs](https://github.com/tmsrjs).
|
20
27
|
|
21
28
|
#### 0.1.0 (6/1/2016)
|
22
29
|
|
23
30
|
* Initial public release - [@dblock](https://github.com/dblock).
|
24
|
-
*
|
25
|
-
*
|
26
|
-
*
|
27
|
-
*
|
28
|
-
*
|
29
|
-
*
|
30
|
-
*
|
31
|
-
*
|
32
|
-
*
|
33
|
-
*
|
34
|
-
*
|
31
|
+
* Renamed slack-bot-server to slack-ruby-bot-server - [@dblock](https://github.com/dblock).
|
32
|
+
* [#11](https://github.com/slack-ruby/slack-ruby-bot-server/pull/11): Turn project into gem - [@tmsrjs](https://github.com/tmsrjs).
|
33
|
+
* Use `celluloid-io` instead of `faye-websocket`, upgrade to slack-ruby-bot 0.8.0 - [@dblock](https://github.com/dblock).
|
34
|
+
* Fixed `SlackRubyBotServer#reset` - [@dblock](https://github.com/dblock).
|
35
|
+
* Use Grape 0.15.x - [@dblock](https://github.com/dblock).
|
36
|
+
* Removed OOB GC - [@dblock](https://github.com/dblock).
|
37
|
+
* Use Unicorn instead of Puma - [@dblock](https://github.com/dblock).
|
38
|
+
* Fix: wait for EventMachine reactor to start - [@dblock](https://github.com/dblock).
|
39
|
+
* Use an OOB GC - [@dblock](https://github.com/dblock).
|
40
|
+
* Defer start, much faster - [@dblock](https://github.com/dblock).
|
41
|
+
* Backported changes from slack-metabot and slack-shellbot - [@dblock](https://github.com/dblock).
|
data/Dangerfile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# inherits from https://github.com/slack-ruby/danger
|
data/Gemfile
CHANGED
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 0.
|
16
|
+
You're reading the documentation for the **stable** release of slack-ruby-bot-server 0.4.0. See [UPGRADING](UPGRADING.md) when upgrading from an older version.
|
17
17
|
|
18
18
|
### Try Me
|
19
19
|
|
@@ -76,15 +76,15 @@ You can introduce custom behavior into the service lifecycle via callbacks. This
|
|
76
76
|
```ruby
|
77
77
|
instance = SlackRubyBotServer::Service.instance
|
78
78
|
|
79
|
-
instance.on :created do |team,
|
79
|
+
instance.on :created do |team, error|
|
80
80
|
# a new team has been registered
|
81
81
|
end
|
82
82
|
|
83
|
-
instance.on :deactivated do |team,
|
83
|
+
instance.on :deactivated do |team, error|
|
84
84
|
# an existing team has been deactivated in Slack
|
85
85
|
end
|
86
86
|
|
87
|
-
instance.on :error do |team,
|
87
|
+
instance.on :error do |team, error|
|
88
88
|
# an error has occurred
|
89
89
|
end
|
90
90
|
```
|
@@ -104,8 +104,6 @@ The following callbacks are supported. All callbacks receive a `team`, except `e
|
|
104
104
|
| started | the service has (re)connected a team to Slack |
|
105
105
|
| deactivating | a team is being deactivated |
|
106
106
|
| deactivated | a team has been deactivated |
|
107
|
-
| resetting | the service is resetting, all teams being stopped |
|
108
|
-
| reset | the service has been reset, all teams have been stopped |
|
109
107
|
|
110
108
|
#### Server Class
|
111
109
|
|
data/UPGRADING.md
CHANGED
@@ -1,6 +1,29 @@
|
|
1
1
|
Upgrading Slack-Ruby-Bot-Server
|
2
2
|
===============================
|
3
3
|
|
4
|
+
### Upgrading to >= 0.4.0
|
5
|
+
|
6
|
+
#### Add giphy to your Gemfile for GIF support
|
7
|
+
|
8
|
+
The dependency on the `giphy` gem was dropped in slack-ruby-bot 0.9.0 and GIFs don't appear by default. If you want GIF support, add `gem 'giphy'` to your **Gemfile**.
|
9
|
+
|
10
|
+
See [slack-ruby-bot#89](https://github.com/slack-ruby/slack-ruby-bot/pull/89) for more information.
|
11
|
+
|
12
|
+
#### Changes in Callbacks
|
13
|
+
|
14
|
+
The `SlackRubyBotServer::Service` class used to track services in a `Hash`. This is no longer the case. Callbacks no longer receive a server object for the team, but the latter is assigned as `team.server`.
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
instance = SlackRubyBotServer::Service.instance
|
18
|
+
|
19
|
+
instance.on :started do |team, error|
|
20
|
+
# a new team has been registered
|
21
|
+
# team.server is available
|
22
|
+
end
|
23
|
+
```
|
24
|
+
|
25
|
+
The `reset` and `resetting` callbacks have also been removed.
|
26
|
+
|
4
27
|
### Upgrading to >= 0.3.1
|
5
28
|
|
6
29
|
#### Remove Monkey-Patching of SlackRubyBotServer::App
|
@@ -14,8 +14,6 @@ module SlackRubyBotServer
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def initialize
|
17
|
-
@lock = Mutex.new
|
18
|
-
@services = {}
|
19
17
|
@callbacks = Hash.new { |h, k| h[k] = [] }
|
20
18
|
end
|
21
19
|
|
@@ -25,91 +23,73 @@ module SlackRubyBotServer
|
|
25
23
|
|
26
24
|
def create!(team)
|
27
25
|
run_callbacks :creating, team
|
28
|
-
|
29
|
-
run_callbacks :created, team
|
26
|
+
start!(team)
|
27
|
+
run_callbacks :created, team
|
30
28
|
end
|
31
29
|
|
32
30
|
def start!(team)
|
33
|
-
raise 'Token already known.' if @services.key?(team.token)
|
34
31
|
run_callbacks :starting, team
|
35
32
|
logger.info "Starting team #{team}."
|
36
33
|
server = SlackRubyBotServer::Config.server_class.new(team: team)
|
37
|
-
@lock.synchronize do
|
38
|
-
@services[team.token] = server
|
39
|
-
end
|
40
34
|
start_server! team, server
|
41
|
-
run_callbacks :started, team
|
35
|
+
run_callbacks :started, team
|
42
36
|
server
|
43
37
|
rescue StandardError => e
|
44
|
-
run_callbacks :error, team,
|
38
|
+
run_callbacks :error, team, e
|
45
39
|
logger.error e
|
46
40
|
end
|
47
41
|
|
48
42
|
def restart!(team, server, wait = 1)
|
49
|
-
run_callbacks :restarting, team
|
43
|
+
run_callbacks :restarting, team
|
50
44
|
start_server! team, server, wait
|
51
|
-
run_callbacks :restarted, team
|
45
|
+
run_callbacks :restarted, team
|
52
46
|
end
|
53
47
|
|
54
48
|
def stop!(team)
|
55
49
|
logger.info "Stopping team #{team}."
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
run_callbacks :stopping, team, server
|
60
|
-
server.stop!
|
61
|
-
@services.delete(team.token)
|
62
|
-
run_callbacks :stopped, team, server
|
63
|
-
end
|
50
|
+
run_callbacks :stopping, team
|
51
|
+
team.server.stop! if team.server
|
52
|
+
run_callbacks :stopped, team
|
64
53
|
rescue StandardError => e
|
65
|
-
run_callbacks :error, team,
|
54
|
+
run_callbacks :error, team, e
|
66
55
|
logger.error e
|
56
|
+
ensure
|
57
|
+
team.server = nil
|
67
58
|
end
|
68
59
|
|
69
60
|
def start_from_database!
|
70
61
|
Team.active.each do |team|
|
71
62
|
run_callbacks :booting, team
|
72
|
-
|
73
|
-
run_callbacks :booted, team
|
63
|
+
start!(team)
|
64
|
+
run_callbacks :booted, team
|
74
65
|
end
|
75
66
|
end
|
76
67
|
|
77
68
|
def deactivate!(team)
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
run_callbacks :deactivating, team, server
|
82
|
-
team.deactivate!
|
83
|
-
@services.delete(team.token)
|
84
|
-
run_callbacks :deactivated, team, server
|
85
|
-
end
|
69
|
+
run_callbacks :deactivating, team
|
70
|
+
team.deactivate!
|
71
|
+
run_callbacks :deactivated, team
|
86
72
|
rescue Mongoid::Errors::Validations => e
|
87
|
-
run_callbacks :error, team,
|
73
|
+
run_callbacks :error, team, e
|
88
74
|
logger.error "#{team.name}: #{e.message}, error - #{e.document.class}, #{e.document.errors.to_hash}, ignored."
|
89
75
|
rescue StandardError => e
|
90
|
-
run_callbacks :error, team,
|
76
|
+
run_callbacks :error, team, e
|
91
77
|
logger.error "#{team.name}: #{e.class}, #{e.message}, ignored."
|
92
|
-
|
93
|
-
|
94
|
-
def reset!
|
95
|
-
run_callbacks :resetting
|
96
|
-
@services.values.to_a.each do |server|
|
97
|
-
stop!(server.team)
|
98
|
-
end
|
99
|
-
run_callbacks :reset
|
78
|
+
ensure
|
79
|
+
team.server = nil
|
100
80
|
end
|
101
81
|
|
102
82
|
def self.reset!
|
103
|
-
@instance.reset! if @instance
|
104
83
|
@instance = nil
|
105
84
|
end
|
106
85
|
|
107
86
|
private
|
108
87
|
|
109
88
|
def start_server!(team, server, wait = 1)
|
89
|
+
team.server = server
|
110
90
|
server.start_async
|
111
91
|
rescue StandardError => e
|
112
|
-
run_callbacks :error, team,
|
92
|
+
run_callbacks :error, team, e
|
113
93
|
case e.message
|
114
94
|
when 'account_inactive', 'invalid_auth' then
|
115
95
|
logger.error "#{team.name}: #{e.message}, team will be deactivated."
|
@@ -121,11 +101,11 @@ module SlackRubyBotServer
|
|
121
101
|
end
|
122
102
|
end
|
123
103
|
|
124
|
-
def run_callbacks(type, team = nil,
|
104
|
+
def run_callbacks(type, team = nil, error = nil)
|
125
105
|
callbacks = @callbacks[type.to_s]
|
126
106
|
return false unless callbacks
|
127
107
|
callbacks.each do |c|
|
128
|
-
c.call team,
|
108
|
+
c.call team, error
|
129
109
|
end
|
130
110
|
true
|
131
111
|
rescue StandardError => e
|
@@ -0,0 +1 @@
|
|
1
|
+
This app is deployed from [github.com/slack-ruby/slack-ruby-bot-server-sample](https://github.com/slack-ruby/slack-ruby-bot-server-sample).
|
data/sample_app/config.ru
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.4.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: 2016-
|
11
|
+
date: 2016-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: slack-ruby-bot
|
@@ -207,6 +207,7 @@ files:
|
|
207
207
|
- CHANGELOG.md
|
208
208
|
- CONTRIBUTING.md
|
209
209
|
- DEBUGGING.md
|
210
|
+
- Dangerfile
|
210
211
|
- Gemfile
|
211
212
|
- Guardfile
|
212
213
|
- LICENSE
|
@@ -264,6 +265,7 @@ files:
|
|
264
265
|
- sample_app/.rspec
|
265
266
|
- sample_app/Gemfile
|
266
267
|
- sample_app/Procfile
|
268
|
+
- sample_app/README.md
|
267
269
|
- sample_app/Rakefile
|
268
270
|
- sample_app/commands.rb
|
269
271
|
- sample_app/commands/help.rb
|
@@ -296,7 +298,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
296
298
|
version: '0'
|
297
299
|
requirements: []
|
298
300
|
rubyforge_project:
|
299
|
-
rubygems_version: 2.
|
301
|
+
rubygems_version: 2.5.1
|
300
302
|
signing_key:
|
301
303
|
specification_version: 4
|
302
304
|
summary: A Grape API serving a Slack bot to multiple teams.
|