slack-ruby-bot-server 0.11.1 → 1.0.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/.github/FUNDING.yml +1 -0
- data/.rubocop.yml +1 -1
- data/.rubocop_todo.yml +45 -13
- data/.travis.yml +7 -6
- data/CHANGELOG.md +49 -22
- data/DEBUGGING.md +0 -20
- data/Dangerfile +1 -0
- data/Gemfile +3 -2
- data/LICENSE +1 -1
- data/README.md +106 -52
- data/UPGRADING.md +14 -0
- data/images/create-app.png +0 -0
- data/lib/slack-ruby-bot-server.rb +11 -13
- data/lib/slack-ruby-bot-server/api.rb +4 -4
- data/lib/slack-ruby-bot-server/api/endpoints.rb +3 -3
- data/lib/slack-ruby-bot-server/api/endpoints/teams_endpoint.rb +11 -3
- data/lib/slack-ruby-bot-server/api/helpers.rb +4 -4
- data/lib/slack-ruby-bot-server/api/helpers/cursor_helpers.rb +2 -0
- data/lib/slack-ruby-bot-server/api/helpers/sort_helpers.rb +1 -0
- data/lib/slack-ruby-bot-server/api/middleware.rb +5 -10
- data/lib/slack-ruby-bot-server/api/presenters.rb +5 -5
- data/lib/slack-ruby-bot-server/api/presenters/status_presenter.rb +1 -0
- data/lib/slack-ruby-bot-server/config.rb +16 -2
- data/lib/slack-ruby-bot-server/config/database_adapters/activerecord.rb +2 -2
- data/lib/slack-ruby-bot-server/config/database_adapters/mongoid.rb +4 -2
- data/lib/slack-ruby-bot-server/ext.rb +1 -1
- data/lib/slack-ruby-bot-server/ext/mongoid/slack-ruby-bot/commands/base.rb +2 -2
- data/lib/slack-ruby-bot-server/loggable.rb +25 -0
- data/lib/slack-ruby-bot-server/models/team/activerecord.rb +8 -5
- data/lib/slack-ruby-bot-server/models/team/methods.rb +12 -0
- data/lib/slack-ruby-bot-server/models/team/mongoid.rb +8 -4
- data/lib/slack-ruby-bot-server/rspec.rb +0 -1
- data/lib/slack-ruby-bot-server/service.rb +48 -32
- data/lib/slack-ruby-bot-server/version.rb +1 -1
- data/public/index.html.erb +2 -1
- data/public/scripts/messages.js +33 -0
- data/public/scripts/register.js +0 -31
- data/slack-ruby-bot-server.gemspec +3 -3
- data/tasks/db.rake +0 -36
- metadata +19 -57
- data/images/new.png +0 -0
- data/images/slackbotserver.gif +0 -0
- data/images/slackbutton.gif +0 -0
- data/lib/slack-ruby-bot-server/ext/activerecord/slack-ruby-bot/commands/base.rb +0 -18
- data/lib/slack-ruby-bot-server/ext/slack-ruby-bot.rb +0 -2
- data/lib/slack-ruby-bot-server/ext/slack-ruby-bot/client.rb +0 -12
- data/lib/slack-ruby-bot-server/server.rb +0 -30
- data/sample_apps/README.md +0 -11
- data/sample_apps/sample_app_activerecord/.rspec +0 -3
- data/sample_apps/sample_app_activerecord/.standalone_migrations +0 -3
- data/sample_apps/sample_app_activerecord/Gemfile +0 -24
- data/sample_apps/sample_app_activerecord/Procfile +0 -1
- data/sample_apps/sample_app_activerecord/README.md +0 -11
- data/sample_apps/sample_app_activerecord/Rakefile +0 -14
- data/sample_apps/sample_app_activerecord/commands.rb +0 -2
- data/sample_apps/sample_app_activerecord/commands/help.rb +0 -19
- data/sample_apps/sample_app_activerecord/commands/whoami.rb +0 -6
- data/sample_apps/sample_app_activerecord/config.ru +0 -22
- data/sample_apps/sample_app_activerecord/config/newrelic.yml +0 -217
- data/sample_apps/sample_app_activerecord/config/postgresql.yml +0 -17
- data/sample_apps/sample_app_activerecord/db/migrate/20170307164946_create_teams_table.rb +0 -12
- data/sample_apps/sample_app_activerecord/db/migrate/20190323181453_add_activated_fields.rb +0 -7
- data/sample_apps/sample_app_activerecord/db/schema.rb +0 -29
- data/sample_apps/sample_app_activerecord/spec/api/root_spec.rb +0 -16
- data/sample_apps/sample_app_activerecord/spec/commands/help_spec.rb +0 -14
- data/sample_apps/sample_app_activerecord/spec/commands/whoami_spec.rb +0 -14
- data/sample_apps/sample_app_activerecord/spec/spec_helper.rb +0 -19
- data/sample_apps/sample_app_mongoid/.rspec +0 -3
- data/sample_apps/sample_app_mongoid/Gemfile +0 -20
- data/sample_apps/sample_app_mongoid/Procfile +0 -1
- data/sample_apps/sample_app_mongoid/README.md +0 -14
- data/sample_apps/sample_app_mongoid/Rakefile +0 -10
- data/sample_apps/sample_app_mongoid/commands.rb +0 -2
- data/sample_apps/sample_app_mongoid/commands/help.rb +0 -19
- data/sample_apps/sample_app_mongoid/commands/whoami.rb +0 -6
- data/sample_apps/sample_app_mongoid/config.ru +0 -14
- data/sample_apps/sample_app_mongoid/config/mongoid.yml +0 -27
- data/sample_apps/sample_app_mongoid/config/newrelic.yml +0 -217
- data/sample_apps/sample_app_mongoid/spec/api/root_spec.rb +0 -16
- data/sample_apps/sample_app_mongoid/spec/commands/help_spec.rb +0 -14
- data/sample_apps/sample_app_mongoid/spec/commands/whoami_spec.rb +0 -14
- data/sample_apps/sample_app_mongoid/spec/spec_helper.rb +0 -27
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3999b9e5a783666fcf1cebfe6d07d50e0228d7a1e3c17ca52217c7677705a1c2
|
|
4
|
+
data.tar.gz: 6294712aae7ca330fa3c13764e369084ed7f097772e22b54e5a8c1964ec2e130
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 17c1e6474f1a45c964d67210d96669dc4bbb5910c3571d1720916f9a13b469741d08462e6feb57185a9745ffb373164f68c88f91bbf71691313215a23264a0a5
|
|
7
|
+
data.tar.gz: 43c5fde5d25f993be6da99758303026ff2870b26e50435cda7bc10218ae0fea1c7a9ab321d946f62485fc59f37da845ee425804327b1a5c7a4c2575d1f9ccfd3
|
data/.github/FUNDING.yml
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
github: [dblock]
|
data/.rubocop.yml
CHANGED
data/.rubocop_todo.yml
CHANGED
|
@@ -1,34 +1,66 @@
|
|
|
1
1
|
# This configuration was generated by
|
|
2
2
|
# `rubocop --auto-gen-config`
|
|
3
|
-
# on
|
|
3
|
+
# on 2020-11-15 11:38:22 -0500 using RuboCop version 0.81.0.
|
|
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
|
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
|
8
8
|
|
|
9
|
-
# Offense count:
|
|
9
|
+
# Offense count: 1
|
|
10
10
|
# Cop supports --auto-correct.
|
|
11
11
|
# Configuration parameters: EnforcedStyle.
|
|
12
|
-
# SupportedStyles:
|
|
13
|
-
Layout/
|
|
12
|
+
# SupportedStyles: squiggly, active_support, powerpack, unindent
|
|
13
|
+
Layout/HeredocIndentation:
|
|
14
14
|
Exclude:
|
|
15
15
|
- 'lib/slack-ruby-bot-server/info.rb'
|
|
16
|
-
- 'sample_apps/sample_app_activerecord/commands/help.rb'
|
|
17
|
-
- 'sample_apps/sample_app_mongoid/commands/help.rb'
|
|
18
16
|
|
|
19
|
-
# Offense count:
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
# Offense count: 1
|
|
18
|
+
Lint/AmbiguousOperator:
|
|
19
|
+
Exclude:
|
|
20
|
+
- 'spec/slack-ruby-bot-server/service_spec.rb'
|
|
21
|
+
|
|
22
|
+
# Offense count: 2
|
|
23
|
+
# Cop supports --auto-correct.
|
|
24
|
+
Lint/NonDeterministicRequireOrder:
|
|
25
|
+
Exclude:
|
|
26
|
+
- 'spec/spec_helper.rb'
|
|
27
|
+
|
|
28
|
+
# Offense count: 1
|
|
29
|
+
# Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts, AllowedAcronyms.
|
|
30
|
+
# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
|
|
31
|
+
Naming/FileName:
|
|
32
|
+
Exclude:
|
|
33
|
+
- 'lib/slack-ruby-bot-server.rb'
|
|
34
|
+
|
|
35
|
+
# Offense count: 1
|
|
36
|
+
# Configuration parameters: ForbiddenDelimiters.
|
|
37
|
+
# ForbiddenDelimiters: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$))
|
|
22
38
|
Naming/HeredocDelimiterNaming:
|
|
23
39
|
Exclude:
|
|
24
40
|
- 'lib/slack-ruby-bot-server/info.rb'
|
|
25
|
-
|
|
26
|
-
|
|
41
|
+
|
|
42
|
+
# Offense count: 3
|
|
43
|
+
# Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
|
|
44
|
+
# AllowedNames: io, id, to, by, on, in, at, ip, db, os, pp
|
|
45
|
+
Naming/MethodParameterName:
|
|
46
|
+
Exclude:
|
|
47
|
+
- 'lib/slack-ruby-bot-server/models/team/activerecord.rb'
|
|
48
|
+
- 'lib/slack-ruby-bot-server/models/team/mongoid.rb'
|
|
49
|
+
- 'lib/slack-ruby-bot-server/service.rb'
|
|
27
50
|
|
|
28
51
|
# Offense count: 1
|
|
29
52
|
# Cop supports --auto-correct.
|
|
30
|
-
# Configuration parameters: EnforcedStyle.
|
|
31
|
-
# SupportedStyles: module_function, extend_self
|
|
53
|
+
# Configuration parameters: EnforcedStyle, Autocorrect.
|
|
54
|
+
# SupportedStyles: module_function, extend_self, forbidden
|
|
32
55
|
Style/ModuleFunction:
|
|
33
56
|
Exclude:
|
|
34
57
|
- 'lib/slack-ruby-bot-server/config.rb'
|
|
58
|
+
|
|
59
|
+
# Offense count: 1
|
|
60
|
+
# Cop supports --auto-correct.
|
|
61
|
+
# Configuration parameters: AutoCorrect, EnforcedStyle, IgnoredMethods.
|
|
62
|
+
# SupportedStyles: predicate, comparison
|
|
63
|
+
Style/NumericPredicate:
|
|
64
|
+
Exclude:
|
|
65
|
+
- 'spec/**/*'
|
|
66
|
+
- 'lib/slack-ruby-bot-server/service.rb'
|
data/.travis.yml
CHANGED
|
@@ -4,24 +4,26 @@ cache: bundler
|
|
|
4
4
|
|
|
5
5
|
matrix:
|
|
6
6
|
include:
|
|
7
|
-
- rvm: 2.
|
|
7
|
+
- rvm: 2.6.2
|
|
8
8
|
script:
|
|
9
9
|
- bundle exec danger
|
|
10
|
-
|
|
10
|
+
services:
|
|
11
|
+
- xvfb
|
|
12
|
+
- rvm: 2.6.2
|
|
11
13
|
env: DATABASE_ADAPTER=activerecord
|
|
12
14
|
services:
|
|
15
|
+
- xvfb
|
|
13
16
|
- postgresql
|
|
14
|
-
- rvm: 2.
|
|
17
|
+
- rvm: 2.6.2
|
|
15
18
|
env: DATABASE_ADAPTER=mongoid
|
|
16
19
|
services:
|
|
20
|
+
- xvfb
|
|
17
21
|
- mongodb
|
|
18
22
|
|
|
19
23
|
addons:
|
|
20
24
|
firefox: 54.0
|
|
21
25
|
|
|
22
26
|
before_install:
|
|
23
|
-
- export DISPLAY=:99.0
|
|
24
|
-
- sh -e /etc/init.d/xvfb start
|
|
25
27
|
- wget https://github.com/mozilla/geckodriver/releases/download/v0.18.0/geckodriver-v0.18.0-linux64.tar.gz
|
|
26
28
|
- mkdir geckodriver
|
|
27
29
|
- tar -xzf geckodriver-v0.18.0-linux64.tar.gz -C geckodriver
|
|
@@ -29,4 +31,3 @@ before_install:
|
|
|
29
31
|
|
|
30
32
|
script:
|
|
31
33
|
- bundle exec rake
|
|
32
|
-
- BUNDLE_GEMFILE=Gemfile && cd sample_apps/sample_app_$DATABASE_ADAPTER && bundle && bundle exec rake
|
data/CHANGELOG.md
CHANGED
|
@@ -1,20 +1,47 @@
|
|
|
1
1
|
### Changelog
|
|
2
2
|
|
|
3
|
+
#### 1.0.0 (2020/11/15)
|
|
4
|
+
|
|
5
|
+
* [#129](https://github.com/slack-ruby/slack-ruby-bot-server/pull/129): Extracted RealTime components into [slack-ruby-bot-server-rtm](https://github.com/slack-ruby/slack-ruby-bot-server-rtm) - [@dblock](https://github.com/dblock).
|
|
6
|
+
|
|
7
|
+
#### 0.12.3 (2020/11/14)
|
|
8
|
+
|
|
9
|
+
* [#123](https://github.com/slack-ruby/slack-ruby-bot-server/pull/123): Reactivate a team that was disabled from Slack - [@dblock](https://github.com/dblock).
|
|
10
|
+
* [#127](https://github.com/slack-ruby/slack-ruby-bot-server/pull/127): Added a Rails bot example link - [@CrazyOptimist](https://github.com/CrazyOptimist).
|
|
11
|
+
|
|
12
|
+
#### 0.12.2 (2020/7/26)
|
|
13
|
+
|
|
14
|
+
* [#120](https://github.com/slack-ruby/slack-ruby-bot-server/pull/120): Removed GIFs - [@dblock](https://github.com/dblock).
|
|
15
|
+
* [#121](https://github.com/slack-ruby/slack-ruby-bot-server/pull/121): Added TOC - [@dblock](https://github.com/dblock).
|
|
16
|
+
|
|
17
|
+
#### 0.12.1 (2020/5/16)
|
|
18
|
+
|
|
19
|
+
* [#118](https://github.com/slack-ruby/slack-ruby-bot-server/pull/118): Do not fail to start on errors in `Team#purge!` - [@dblock](https://github.com/dblock).
|
|
20
|
+
|
|
21
|
+
#### 0.12.0 (2020/4/26)
|
|
22
|
+
|
|
23
|
+
* [#113](https://github.com/slack-ruby/slack-ruby-bot-server/pull/113): Added support for intervals with `.every` - [@dblock](https://github.com/dblock).
|
|
24
|
+
* [#112](https://github.com/slack-ruby/slack-ruby-bot-server/pull/112): Added support for multiple `.on` events as an argument - [@dblock](https://github.com/dblock).
|
|
25
|
+
* [#111](https://github.com/slack-ruby/slack-ruby-bot-server/pull/111): Removed dependency on Virtus - [@dblock](https://github.com/dblock).
|
|
26
|
+
* [#110](https://github.com/slack-ruby/slack-ruby-bot-server/pull/110): Fixed ActiveRecord sample app - [@CeeBeeUK](https://github.com/CeeBeeUK).
|
|
27
|
+
* [#114](https://github.com/slack-ruby/slack-ruby-bot-server/pull/114): Used `require_relative` to prevent local collisions - [@dblock](https://github.com/dblock).
|
|
28
|
+
* [#115](https://github.com/slack-ruby/slack-ruby-bot-server/pull/115): Added `Config#view_paths` to be used by Rack middleware - [@dblock](https://github.com/dblock).
|
|
29
|
+
|
|
3
30
|
#### 0.11.1 (2019/5/17)
|
|
4
31
|
|
|
5
|
-
* [#104](https://github.com/slack-ruby/slack-ruby-bot-server/pull/104):
|
|
32
|
+
* [#104](https://github.com/slack-ruby/slack-ruby-bot-server/pull/104): Locked async-websocket at a compatible 0.8.0 version - [@dblock](https://github.com/dblock).
|
|
6
33
|
|
|
7
34
|
#### 0.11.0 (2019/4/12)
|
|
8
35
|
|
|
9
36
|
* [#101](https://github.com/slack-ruby/slack-ruby-bot-server/pull/101): Removed legacy migrations, including `SLACK_API_TOKEN`, team `name`, `team_id` and `active` - [@dblock](https://github.com/dblock).
|
|
10
37
|
* [#98](https://github.com/slack-ruby/slack-ruby-bot-server/pull/98): Removed `unicorn` from gem dependencies - [@dblock](https://github.com/dblock).
|
|
11
|
-
* [#90](https://github.com/slack-ruby/slack-ruby-bot-server/pull/90):
|
|
38
|
+
* [#90](https://github.com/slack-ruby/slack-ruby-bot-server/pull/90): Updated ActiveRecord sample app to support ENV variables in `postgresql.yml` - [@ashkan18](https://github.com/ashkan18).
|
|
12
39
|
|
|
13
40
|
#### 0.10.0 (2019/3/23)
|
|
14
41
|
|
|
15
42
|
* [#97](https://github.com/slack-ruby/slack-ruby-bot-server/pull/97): Added `Config#service_class` to override the `SlackRubyBotServer::Service.instance` singleton - [@dblock](https://github.com/dblock).
|
|
16
43
|
* [#96](https://github.com/slack-ruby/slack-ruby-bot-server/pull/96): Added `Team#bot_user_id`, `activated_user_id` and `activated_user_access_token` - [@dblock](https://github.com/dblock).
|
|
17
|
-
* [#95](https://github.com/slack-ruby/slack-ruby-bot-server/pull/95):
|
|
44
|
+
* [#95](https://github.com/slack-ruby/slack-ruby-bot-server/pull/95): Exposed the optional `state` parameter that is returned from the Add to Slack button - [@aok-solutions](https://github.com/aok-solutions).
|
|
18
45
|
|
|
19
46
|
#### 0.9.0 (2019/2/25)
|
|
20
47
|
|
|
@@ -22,31 +49,31 @@
|
|
|
22
49
|
|
|
23
50
|
#### 0.8.3 (2019/1/17)
|
|
24
51
|
|
|
25
|
-
* [#88](https://github.com/slack-ruby/slack-ruby-bot-server/issues/88):
|
|
52
|
+
* [#88](https://github.com/slack-ruby/slack-ruby-bot-server/issues/88): Fixed compatibility with Grape 1.2.x - [@dblock](https://github.com/dblock).
|
|
26
53
|
|
|
27
54
|
#### 0.8.2 (2018/10/11)
|
|
28
55
|
|
|
29
|
-
* [#80](https://github.com/slack-ruby/slack-ruby-bot-server/pull/80):
|
|
56
|
+
* [#80](https://github.com/slack-ruby/slack-ruby-bot-server/pull/80): Fixed closed stream when closing connection in ping worker - [@dblock](https://github.com/dblock).
|
|
30
57
|
|
|
31
58
|
#### 0.8.1 (2018/9/20)
|
|
32
59
|
|
|
33
|
-
* [#79](https://github.com/slack-ruby/slack-ruby-bot-server/pull/79):
|
|
60
|
+
* [#79](https://github.com/slack-ruby/slack-ruby-bot-server/pull/79): Fixed ping worker terminates on a failed restart - [@dblock](https://github.com/dblock).
|
|
34
61
|
|
|
35
62
|
#### 0.8.0 (2018/9/8)
|
|
36
63
|
|
|
37
|
-
* [#75](https://github.com/slack-ruby/slack-ruby-bot-server/pull/75):
|
|
38
|
-
* [#76](https://github.com/slack-ruby/slack-ruby-bot-server/pull/76):
|
|
64
|
+
* [#75](https://github.com/slack-ruby/slack-ruby-bot-server/pull/75): Defaulted to `async-websocket` instead of `celluloid-io` - [@dblock](https://github.com/dblock).
|
|
65
|
+
* [#76](https://github.com/slack-ruby/slack-ruby-bot-server/pull/76): Adjusted wait time on restart on Slack::Web::Api::Errors::TooManyRequestsError - [@dblock](https://github.com/dblock).
|
|
39
66
|
|
|
40
67
|
#### 0.7.0 (2018/8/22)
|
|
41
68
|
|
|
42
|
-
* [#60](https://github.com/slack-ruby/slack-ruby-bot-server/pull/60):
|
|
69
|
+
* [#60](https://github.com/slack-ruby/slack-ruby-bot-server/pull/60): Logged caught Standard::Error backtrace at debug-level - [@alexagranov](https://github.com/alexagranov).
|
|
43
70
|
* [#65](https://github.com/slack-ruby/slack-ruby-bot-server/pull/65): Updated Capybara and selenium-webdriver - [@dblock](https://github.com/dblock).
|
|
44
71
|
* [#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).
|
|
45
72
|
* [#74](https://github.com/slack-ruby/slack-ruby-bot-server/pull/74): Added ping worker, will restart offline bots - [@dblock](https://github.com/dblock).
|
|
46
73
|
|
|
47
74
|
#### 0.6.1 (2017/3/29)
|
|
48
75
|
|
|
49
|
-
* [#54](https://github.com/slack-ruby/slack-ruby-bot-server/pull/54):
|
|
76
|
+
* [#54](https://github.com/slack-ruby/slack-ruby-bot-server/pull/54): Removed one more Mongoid dependency when rescuing from _invoke - [@alexagranov](https://github.com/alexagranov).
|
|
50
77
|
* [#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).
|
|
51
78
|
|
|
52
79
|
#### 0.6.0 (2017/3/12)
|
|
@@ -57,17 +84,17 @@
|
|
|
57
84
|
|
|
58
85
|
#### 0.5.0 (2017/2/9)
|
|
59
86
|
|
|
60
|
-
* [#43](https://github.com/slack-ruby/slack-ruby-bot-server/pull/43):
|
|
61
|
-
* [#43](https://github.com/slack-ruby/slack-ruby-bot-server/pull/43):
|
|
62
|
-
* [#28](https://github.com/slack-ruby/slack-ruby-bot-server/pull/28):
|
|
63
|
-
* [#31](https://github.com/slack-ruby/slack-ruby-bot-server/pull/31):
|
|
87
|
+
* [#43](https://github.com/slack-ruby/slack-ruby-bot-server/pull/43): Fixed `cannot load kaminari/grape` - [@dblock](https://github.com/dblock).
|
|
88
|
+
* [#43](https://github.com/slack-ruby/slack-ruby-bot-server/pull/43): Fixed `undefined method '[]' for nil:NilClass` in APIs - [@dblock](https://github.com/dblock).
|
|
89
|
+
* [#28](https://github.com/slack-ruby/slack-ruby-bot-server/pull/28): Used `slack-ruby-danger` gem - [@dblock](https://github.com/dblock).
|
|
90
|
+
* [#31](https://github.com/slack-ruby/slack-ruby-bot-server/pull/31): Added `MONGODB_URI` as environment variable for MongoDB - [@corprew](https://github.com/corprew).
|
|
64
91
|
|
|
65
92
|
#### 0.4.0 (2016/8/29)
|
|
66
93
|
|
|
67
94
|
* [#25](https://github.com/slack-ruby/slack-ruby-bot-server/pull/25): Added [danger](http://danger.systems), PR linting - [@dblock](https://github.com/dblock).
|
|
68
95
|
* The `reset` and `resetting` callbacks have been removed - [@dblock](https://github.com/dblock).
|
|
69
96
|
* Callbacks receive `team` and `error`, but no longer `server` - [@dblock](https://github.com/dblock).
|
|
70
|
-
* [#23](https://github.com/slack-ruby/slack-ruby-bot-server/issues/23):
|
|
97
|
+
* [#23](https://github.com/slack-ruby/slack-ruby-bot-server/issues/23): Fixed server-side removal of bot doesn't deactivate it - [@dblock](https://github.com/dblock).
|
|
71
98
|
|
|
72
99
|
#### 0.3.1 (2016/7/10)
|
|
73
100
|
|
|
@@ -91,13 +118,13 @@
|
|
|
91
118
|
|
|
92
119
|
* Initial public release - [@dblock](https://github.com/dblock).
|
|
93
120
|
* Renamed slack-bot-server to slack-ruby-bot-server - [@dblock](https://github.com/dblock).
|
|
94
|
-
* [#11](https://github.com/slack-ruby/slack-ruby-bot-server/pull/11):
|
|
95
|
-
*
|
|
121
|
+
* [#11](https://github.com/slack-ruby/slack-ruby-bot-server/pull/11): Turned project into gem - [@tmsrjs](https://github.com/tmsrjs).
|
|
122
|
+
* Used `celluloid-io` instead of `faye-websocket`, upgrade to slack-ruby-bot 0.8.0 - [@dblock](https://github.com/dblock).
|
|
96
123
|
* Fixed `SlackRubyBotServer#reset` - [@dblock](https://github.com/dblock).
|
|
97
|
-
*
|
|
124
|
+
* Used Grape 0.15.x - [@dblock](https://github.com/dblock).
|
|
98
125
|
* Removed OOB GC - [@dblock](https://github.com/dblock).
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
126
|
+
* Used Unicorn instead of Puma - [@dblock](https://github.com/dblock).
|
|
127
|
+
* Fixed wait for EventMachine reactor to start - [@dblock](https://github.com/dblock).
|
|
128
|
+
* Used an OOB GC - [@dblock](https://github.com/dblock).
|
|
129
|
+
* Deferred start, much faster - [@dblock](https://github.com/dblock).
|
|
103
130
|
* Backported changes from slack-metabot and slack-shellbot - [@dblock](https://github.com/dblock).
|
data/DEBUGGING.md
CHANGED
|
@@ -3,23 +3,3 @@
|
|
|
3
3
|
### Locally
|
|
4
4
|
|
|
5
5
|
You can debug your instance of slack-ruby-bot-server with a built-in `script/console`.
|
|
6
|
-
|
|
7
|
-
### Silence Mongoid Logger
|
|
8
|
-
|
|
9
|
-
If Mongoid logging is annoying you.
|
|
10
|
-
|
|
11
|
-
```ruby
|
|
12
|
-
Mongoid.logger.level = Logger::INFO
|
|
13
|
-
Mongo::Logger.logger.level = Logger::INFO
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
### Heroku
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
heroku run script/console --app=...
|
|
20
|
-
|
|
21
|
-
Running `script/console` attached to terminal... up, run.7593
|
|
22
|
-
|
|
23
|
-
2.2.1 > Team.count
|
|
24
|
-
=> 3
|
|
25
|
-
```
|
data/Dangerfile
CHANGED
data/Gemfile
CHANGED
|
@@ -11,7 +11,7 @@ when 'activerecord' then
|
|
|
11
11
|
gem 'otr-activerecord', '~> 1.2.1'
|
|
12
12
|
gem 'cursor_pagination' # rubocop:disable Bundler/OrderedGems
|
|
13
13
|
gem 'pg'
|
|
14
|
-
when nil
|
|
14
|
+
when nil
|
|
15
15
|
warn "Missing ENV['DATABASE_ADAPTER']."
|
|
16
16
|
else
|
|
17
17
|
warn "Invalid ENV['DATABASE_ADAPTER']: #{ENV['DATABASE_ADAPTER']}."
|
|
@@ -31,12 +31,13 @@ group :development, :test do
|
|
|
31
31
|
gem 'rack-test'
|
|
32
32
|
gem 'rake'
|
|
33
33
|
gem 'rspec'
|
|
34
|
-
gem 'rubocop', '0.
|
|
34
|
+
gem 'rubocop', '0.81.0'
|
|
35
35
|
gem 'selenium-webdriver', '~> 3.4.4'
|
|
36
36
|
gem 'vcr'
|
|
37
37
|
gem 'webmock'
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
group :test do
|
|
41
|
+
gem 'danger-toc', '~> 0.2.0', require: false
|
|
41
42
|
gem 'slack-ruby-danger', '~> 0.1.0', require: false
|
|
42
43
|
end
|
data/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2015-
|
|
3
|
+
Copyright (c) 2015-2020 Daniel Doubrovkine & Contributors
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
|
@@ -7,31 +7,44 @@ Slack Ruby Bot Server
|
|
|
7
7
|
|
|
8
8
|
Build a complete Slack bot service with Slack button integration, in Ruby.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
# Table of Contents
|
|
11
|
+
|
|
12
|
+
- [What is this?](#what-is-this)
|
|
13
|
+
- [Stable Release](#stable-release)
|
|
14
|
+
- [Make Your Own](#make-your-own)
|
|
15
|
+
- [Storage](#storage)
|
|
16
|
+
- [MongoDB](#mongodb)
|
|
17
|
+
- [ActiveRecord](#activerecord)
|
|
18
|
+
- [Usage](#usage)
|
|
19
|
+
- [API](#api)
|
|
20
|
+
- [App](#app)
|
|
21
|
+
- [Service Manager](#service-manager)
|
|
22
|
+
- [Lifecycle Callbacks](#lifecycle-callbacks)
|
|
23
|
+
- [Service Timers](#service-timers)
|
|
24
|
+
- [Extensions](#extensions)
|
|
25
|
+
- [Service Class](#service-class)
|
|
26
|
+
- [HTML Templates](#html-templates)
|
|
27
|
+
- [Access Tokens](#access-tokens)
|
|
28
|
+
- [Sample Bots Using Slack Ruby Bot Server](#sample-bots-using-slack-ruby-bot-server)
|
|
29
|
+
- [Slack Bots with Granular Permissions](#slack-bots-with-granular-permissions)
|
|
30
|
+
- [Legacy Slack Bots](#legacy-slack-bots)
|
|
31
|
+
- [Copyright & License](#copyright--license)
|
|
13
32
|
|
|
14
33
|
### What is this?
|
|
15
34
|
|
|
16
|
-
A library that contains a [Grape](http://github.com/ruby-grape/grape) API serving a
|
|
35
|
+
A library that contains a web server and a RESTful [Grape](http://github.com/ruby-grape/grape) API serving a Slack bot to multiple teams. Use in conjunction with [slack-ruby-bot-server-events](https://github.com/slack-ruby/slack-ruby-bot-server-events) to build a complete Slack bot service, or [slack-ruby-bot-server-rtm](https://github.com/slack-ruby/slack-ruby-bot-server-rtm) to build a Class RealTime Slack bot. Your customers can use a Slack button to install the bot.
|
|
17
36
|
|
|
18
37
|
### Stable Release
|
|
19
38
|
|
|
20
|
-
You're reading the documentation for the **stable** release of slack-ruby-bot-server, 0.
|
|
21
|
-
|
|
22
|
-
### Try Me
|
|
23
|
-
|
|
24
|
-
A demo version of the [sample app with mongoid](sample_apps/sample_app_mongoid) is running on Heroku at [slack-ruby-bot-server.herokuapp.com](https://slack-ruby-bot-server.herokuapp.com). Use the _Add to Slack_ button. The bot will join your team as _@slackbotserver_.
|
|
39
|
+
You're reading the documentation for the **stable** release of slack-ruby-bot-server, v1.0.0. See [UPGRADING](UPGRADING.md) when upgrading from an older version.
|
|
25
40
|
|
|
26
|
-
|
|
41
|
+
### Make Your Own
|
|
27
42
|
|
|
28
|
-
|
|
43
|
+
We recommend you get started from a [slack-ruby-bot-events-sample](https://github.com/slack-ruby/slack-ruby-bot-server-events-sample) app to bootstrap your project.
|
|
29
44
|
|
|
30
|
-
|
|
45
|
+
### Storage
|
|
31
46
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
You can use one of the [sample applications](sample_apps) to bootstrap your project and start adding slack command handlers on top of this code. A database is required to store teams.
|
|
47
|
+
A database is required to store teams.
|
|
35
48
|
|
|
36
49
|
### MongoDB
|
|
37
50
|
|
|
@@ -44,8 +57,6 @@ gem 'mongoid-scroll'
|
|
|
44
57
|
gem 'slack-ruby-bot-server'
|
|
45
58
|
```
|
|
46
59
|
|
|
47
|
-
See the [sample app using Mongoid](sample_apps/sample_app_mongoid) for more information.
|
|
48
|
-
|
|
49
60
|
### ActiveRecord
|
|
50
61
|
|
|
51
62
|
Use ActiveRecord with, for example, PostgreSQL via [pg](https://github.com/ged/ruby-pg). Configure the database connection in `postgresql.yml`. Add the `activerecord`, `pg`, `otr-activerecord` and `cursor_pagination` gems to your Gemfile.
|
|
@@ -58,23 +69,31 @@ gem 'otr-activerecord'
|
|
|
58
69
|
gem 'cursor_pagination'
|
|
59
70
|
```
|
|
60
71
|
|
|
61
|
-
See the [sample app using ActiveRecord](sample_apps/sample_app_activerecord) for more information.
|
|
62
|
-
|
|
63
72
|
### Usage
|
|
64
73
|
|
|
65
|
-
Start with
|
|
74
|
+
Start with the [slack-ruby-bot-events-sample](https://github.com/slack-ruby/slack-ruby-bot-server-events-sample) sample, which contain a couple of custom commands, necessary dependencies and tests, then [create a new Slack App](https://api.slack.com/applications/new).
|
|
66
75
|
|
|
67
|
-

|
|
68
77
|
|
|
69
|
-
Follow Slack's instructions, note the app client ID and secret, give the bot a default name, etc. The redirect URL should be the location of your app
|
|
78
|
+
Follow Slack's instructions, note the app client ID and secret, give the bot a default name, etc. The redirect URL should be the location of your app. For local testing purposes use a public tunneling service such as [ngrok](https://ngrok.com/) to expose local port 9292.
|
|
70
79
|
|
|
71
80
|
Within your application, edit your `.env` file and add `SLACK_CLIENT_ID=...` and `SLACK_CLIENT_SECRET=...` in it.
|
|
72
81
|
|
|
82
|
+
Configure your app's [OAuth scopes](https://api.slack.com/legacy/oauth-scopes) as needed by your application.
|
|
83
|
+
|
|
84
|
+
```ruby
|
|
85
|
+
SlackRubyBotServer.configure do |config|
|
|
86
|
+
config.oauth_scope = ['channels:read', 'chat:write:user']
|
|
87
|
+
end
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
The "Add to Slack" button uses the standard OAuth code grant flow as described in the [Slack docs](https://api.slack.com/docs/oauth#flow). Once clicked, the user is taken through the authorization process at Slack's site. Upon successful completion, a callback containing a temporary code is sent to the redirect URL you specified. The endpoint at that URL contains code that persists the bot token each time a Slack client is instantiated for the specific team.
|
|
91
|
+
|
|
73
92
|
Run `bundle install` and `foreman start` to boot the app. Navigate to [localhost:9292](http://localhost:9292). You should see an "Add to Slack" button. Use it to install the app into your own Slack team.
|
|
74
93
|
|
|
75
94
|
### API
|
|
76
95
|
|
|
77
|
-
This library implements an app, [SlackRubyBotServer::App](lib/slack-ruby-bot-server/app.rb)
|
|
96
|
+
This library implements an app, [SlackRubyBotServer::App](lib/slack-ruby-bot-server/app.rb) and a service manager, [SlackRubyBotServer::Service](lib/slack-ruby-bot-server/service.rb). It also provides [default HTML templates and JS scripts](public) for Slack integration.
|
|
78
97
|
|
|
79
98
|
#### App
|
|
80
99
|
|
|
@@ -104,11 +123,17 @@ MyApp.instance.prepare!
|
|
|
104
123
|
|
|
105
124
|
#### Service Manager
|
|
106
125
|
|
|
126
|
+
##### Lifecycle Callbacks
|
|
127
|
+
|
|
107
128
|
You can introduce custom behavior into the service lifecycle via callbacks. This can be useful when new team has been registered via the API or a team has been deactivated from Slack.
|
|
108
129
|
|
|
109
130
|
```ruby
|
|
110
131
|
instance = SlackRubyBotServer::Service.instance
|
|
111
132
|
|
|
133
|
+
instance.on :started, :stopped do |team|
|
|
134
|
+
# team has been started or stopped
|
|
135
|
+
end
|
|
136
|
+
|
|
112
137
|
instance.on :created do |team, error, options|
|
|
113
138
|
# a new team has been registered
|
|
114
139
|
end
|
|
@@ -138,13 +163,12 @@ The following callbacks are supported. All callbacks receive a `team`, except `e
|
|
|
138
163
|
| deactivating | a team is being deactivated |
|
|
139
164
|
| deactivated | a team has been deactivated |
|
|
140
165
|
|
|
141
|
-
|
|
142
166
|
The [Add to Slack button](https://api.slack.com/docs/slack-button) also allows for an optional `state` parameter that will be returned on completion of the request. The `creating` and `created` callbacks include an options hash where this value can be accessed (to check for forgery attacks for instance).
|
|
143
167
|
```ruby
|
|
144
168
|
auth = OpenSSL::HMAC.hexdigest("SHA256", "key", "data")
|
|
145
169
|
```
|
|
146
170
|
```html
|
|
147
|
-
<a href="https://slack.com/oauth/authorize?scope
|
|
171
|
+
<a href="https://slack.com/oauth/authorize?scope=<%= SlackRubyBotServer::Config.oauth_scope_s %>&client_id=<%= ENV['SLACK_CLIENT_ID'] %>&state=#{auth)"> ... </a>
|
|
148
172
|
```
|
|
149
173
|
```ruby
|
|
150
174
|
instance = SlackRubyBotServer::Service.instance
|
|
@@ -153,30 +177,46 @@ instance.on :creating do |team, error, options|
|
|
|
153
177
|
end
|
|
154
178
|
```
|
|
155
179
|
|
|
156
|
-
|
|
180
|
+
##### Service Timers
|
|
157
181
|
|
|
158
|
-
|
|
182
|
+
You can introduce custom behavior into the service lifecycle on a timer. For example, check whether a team's trial has expired, or periodically cleanup data.
|
|
159
183
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
You can override the server class to handle additional events, and configure the service to use it.
|
|
184
|
+
Note that unlike callbacks, timers are global for the entire service.
|
|
163
185
|
|
|
164
186
|
```ruby
|
|
165
|
-
|
|
166
|
-
on :hello do |client, data|
|
|
167
|
-
# connected to Slack
|
|
168
|
-
end
|
|
187
|
+
instance = SlackRubyBotServer::Service.instance
|
|
169
188
|
|
|
170
|
-
|
|
171
|
-
|
|
189
|
+
instance.every :hour do
|
|
190
|
+
Team.each do |team|
|
|
191
|
+
begin
|
|
192
|
+
# do something with every team once an hour
|
|
193
|
+
rescue StandardError
|
|
194
|
+
end
|
|
172
195
|
end
|
|
173
196
|
end
|
|
174
197
|
|
|
175
|
-
|
|
176
|
-
|
|
198
|
+
instance.every :minute do
|
|
199
|
+
# called every minute
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
instance.every :second do
|
|
203
|
+
# called every second
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
instance.every 30 do
|
|
207
|
+
# called every 30 seconds
|
|
177
208
|
end
|
|
178
209
|
```
|
|
179
210
|
|
|
211
|
+
##### Extensions
|
|
212
|
+
|
|
213
|
+
A number of extensions use service manager callbacks and service timers to implement useful functionality.
|
|
214
|
+
|
|
215
|
+
* [slack-ruby-bot-server-events](https://github.com/slack-ruby/slack-ruby-bot-server-events): Easily handle Slack slash commands, interactive buttons and events.
|
|
216
|
+
* [slack-ruby-bot-server-mailchimp](https://github.com/slack-ruby/slack-ruby-bot-server-mailchimp): Subscribes new bot users to a Mailchimp mailing list.
|
|
217
|
+
* [slack-ruby-bot-server-stripe](https://github.com/slack-ruby/slack-ruby-bot-server-stripe): Enables paid bots with trial periods and commerce through Stripe.
|
|
218
|
+
* [slack-ruby-bot-server-rtm](https://github.com/slack-ruby/slack-ruby-bot-server-rtm): Create RTM Slack bots.
|
|
219
|
+
|
|
180
220
|
#### Service Class
|
|
181
221
|
|
|
182
222
|
You can override the service class to handle additional methods.
|
|
@@ -196,28 +236,42 @@ SlackRubyBotServer::Service.instance # MyService
|
|
|
196
236
|
SlackRubyBotServer::Service.instance.url # https://www.example.com
|
|
197
237
|
```
|
|
198
238
|
|
|
239
|
+
### HTML Templates
|
|
240
|
+
|
|
241
|
+
This library provides a [default HTML template and JS scripts](public) that implement the "Add to Slack" button workflow. Customize your pages by adding a `public` directory in your application and starting with a [index.html.erb](public/index.html.erb) template. The application's `views` and `public` folders are [loaded by default](lib/slack-ruby-bot-server/api/middleware.rb#L32).
|
|
242
|
+
|
|
243
|
+
You can add to or override template paths as follows.
|
|
244
|
+
|
|
245
|
+
```ruby
|
|
246
|
+
SlackRubyBotServer.configure do |config|
|
|
247
|
+
config.view_paths << File.expand_path(File.join(__dir__, 'public'))
|
|
248
|
+
end
|
|
249
|
+
```
|
|
250
|
+
|
|
199
251
|
### Access Tokens
|
|
200
252
|
|
|
201
|
-
By default the implementation of [Team](lib/slack-ruby-bot-server/models/team) stores
|
|
253
|
+
By default the implementation of [Team](lib/slack-ruby-bot-server/models/team) stores the value of the token with all the requested OAuth scopes in both `token` and `activated_user_access_token` (for backwards compatibility). If a legacy Slack bot integration `bot_access_token` is present, it is stored as `token`, and `activated_user_access_token`is the token that has all the requested OAuth scopes.
|
|
254
|
+
|
|
255
|
+
### Sample Bots Using Slack Ruby Bot Server
|
|
202
256
|
|
|
203
|
-
|
|
204
|
-
2) Change the _Add to Slack_ buttons to require the additional scope, eg. `https://slack.com/oauth/authorize?scope=bot,users.profile:read&client_id=...`
|
|
205
|
-
3) The access token with the requested scopes will be stored as `activated_user_access_token`.
|
|
257
|
+
#### Slack Bots with Granular Permissions
|
|
206
258
|
|
|
207
|
-
|
|
259
|
+
* [slack-ruby-bot-server-events-sample](https://github.com/slack-ruby/slack-ruby-bot-server-events-sample), a generic sample
|
|
260
|
+
* [slack-rails-bot-starter](https://github.com/CrazyOptimist/slack-rails-bot-starter), an all-in-one Rails starter kit
|
|
208
261
|
|
|
209
|
-
|
|
262
|
+
#### Legacy Slack Bots
|
|
210
263
|
|
|
211
|
-
* [slack-
|
|
212
|
-
* [slack-
|
|
213
|
-
* [slack-
|
|
214
|
-
* [slack-
|
|
215
|
-
* [slack-
|
|
216
|
-
* [slack-
|
|
217
|
-
* [slack-
|
|
264
|
+
* [slack-ruby-bot-server-sample](https://github.com/slack-ruby/slack-ruby-bot-server-sample), a generic sample
|
|
265
|
+
* [slack-sup](https://github.com/dblock/slack-sup), see [sup.playplay.io](https://sup.playplay.io)
|
|
266
|
+
* [slack-gamebot](https://github.com/dblock/slack-gamebot), see [www.playplay.io](https://www.playplay.io)
|
|
267
|
+
* [slack-market](https://github.com/dblock/slack-market), see [market.playplay.io](https://market.playplay.io)
|
|
268
|
+
* [slack-shellbot](https://github.com/slack-ruby/slack-shellbot), see [shell.playplay.io](https://shell.playplay.io)
|
|
269
|
+
* [slack-api-explorer](https://github.com/slack-ruby/slack-api-explorer), see [api-explorer.playplay.io](https://shell.playplay.io)
|
|
270
|
+
* [slack-strava](https://github.com/dblock/slack-strava), see [slava.playplay.io](https://slava.playplay.io)
|
|
271
|
+
* [slack-arena](https://github.com/dblock/slack-arena), see [arena.playplay.io](https://arena.playplay.io)
|
|
218
272
|
|
|
219
273
|
### Copyright & License
|
|
220
274
|
|
|
221
|
-
Copyright [Daniel Doubrovkine](http://code.dblock.org) and Contributors, 2015-
|
|
275
|
+
Copyright [Daniel Doubrovkine](http://code.dblock.org) and Contributors, 2015-2020
|
|
222
276
|
|
|
223
277
|
[MIT License](LICENSE)
|