slack-ruby-bot-server 0.6.1 → 0.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0713fb4866e25bc7cc7481ef0d03ce589610f970
4
- data.tar.gz: 009024facb962ecda5813694df8d0a559d53de1c
3
+ metadata.gz: 1cc9126666813e0a880a4c970ff259ea90fd0954
4
+ data.tar.gz: 0eede9635d5aca9c6db238e8bb1a3bcf86614564
5
5
  SHA512:
6
- metadata.gz: 196e8d75ea412895c80f7647c3025f881312ba3b631b60905a95f696457a5311e9dfedaeba6a99fb71a072a4fff8dad9dd4711007645471b3645b48ca18f4975
7
- data.tar.gz: bdc28e22da14129cfcba6fac48733943467e702ea68285dd329600e3f9e432a358e2a71ed1817423c113abb92934afe90f005aea67d6324833a062b379fbec48
6
+ metadata.gz: ea825ac737ceb089ad5460b40ff98607d9424bf2d6b9d196351399e73ce065581303d996c105dc20d9c88d4d21e7fa222f7cc65ad9d07e9b22655c01a9c0bd21
7
+ data.tar.gz: 91ed370e494c05e9543aba95379dcecdfdd0513f535a75d349983d7244cb9b4f69590584ad25558ccb4c094934f44b02920c7d255d676cb8341930d4c08e19f2
@@ -1,2 +1,15 @@
1
+ Metrics:
2
+ Enabled: false
3
+
4
+ Metrics/LineLength:
5
+ Max: 500
6
+ Enabled: false
7
+
8
+ Style/Documentation:
9
+ Enabled: false
10
+
11
+ Style/FrozenStringLiteralComment:
12
+ Enabled: false
13
+
1
14
  inherit_from: .rubocop_todo.yml
2
15
 
@@ -1,56 +1,34 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2016-07-01 09:34:39 +0100 using RuboCop version 0.40.0.
3
+ # on 2018-08-22 08:29:35 -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
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 1
10
- Lint/RescueException:
9
+ # Offense count: 3
10
+ # Cop supports --auto-correct.
11
+ # Configuration parameters: EnforcedStyle.
12
+ # SupportedStyles: auto_detection, squiggly, active_support, powerpack, unindent
13
+ Layout/IndentHeredoc:
11
14
  Exclude:
12
- - 'lib/slack-ruby-bot-server/app.rb'
13
-
14
- # Offense count: 9
15
- Metrics/AbcSize:
16
- Max: 33
17
-
18
- # Offense count: 1
19
- # Configuration parameters: CountComments.
20
- Metrics/ClassLength:
21
- Max: 117
22
-
23
- # Offense count: 2
24
- Metrics/CyclomaticComplexity:
25
- Max: 11
26
-
27
- # Offense count: 68
28
- # Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
29
- # URISchemes: http, https
30
- Metrics/LineLength:
31
- Max: 163
32
-
33
- # Offense count: 8
34
- # Configuration parameters: CountComments.
35
- Metrics/MethodLength:
36
- Max: 23
37
-
38
- # Offense count: 2
39
- Metrics/PerceivedComplexity:
40
- Max: 11
41
-
42
- # Offense count: 25
43
- Style/Documentation:
44
- Enabled: false
45
-
46
- # Offense count: 2
47
- # Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts.
48
- Style/FileName:
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
+
19
+ # Offense count: 3
20
+ # Configuration parameters: Blacklist.
21
+ # Blacklist: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$))
22
+ Naming/HeredocDelimiterNaming:
49
23
  Exclude:
50
- - 'lib/slack-ruby-bot-server.rb'
51
- - 'lib/slack-ruby-bot-server/ext/slack-ruby-bot.rb'
24
+ - 'lib/slack-ruby-bot-server/info.rb'
25
+ - 'sample_apps/sample_app_activerecord/commands/help.rb'
26
+ - 'sample_apps/sample_app_mongoid/commands/help.rb'
52
27
 
53
28
  # Offense count: 1
29
+ # Cop supports --auto-correct.
30
+ # Configuration parameters: EnforcedStyle.
31
+ # SupportedStyles: module_function, extend_self
54
32
  Style/ModuleFunction:
55
33
  Exclude:
56
34
  - 'lib/slack-ruby-bot-server/config.rb'
@@ -16,9 +16,16 @@ matrix:
16
16
  services:
17
17
  - mongodb
18
18
 
19
+ addons:
20
+ firefox: 54.0
21
+
19
22
  before_install:
20
- - "export DISPLAY=:99.0"
21
- - "sh -e /etc/init.d/xvfb start"
23
+ - export DISPLAY=:99.0
24
+ - sh -e /etc/init.d/xvfb start
25
+ - wget https://github.com/mozilla/geckodriver/releases/download/v0.18.0/geckodriver-v0.18.0-linux64.tar.gz
26
+ - mkdir geckodriver
27
+ - tar -xzf geckodriver-v0.18.0-linux64.tar.gz -C geckodriver
28
+ - export PATH=$PATH:$PWD/geckodriver
22
29
 
23
30
  script:
24
31
  - bundle exec rake
@@ -1,5 +1,12 @@
1
1
  ### Changelog
2
2
 
3
+ #### 0.7.0 (8/22/2018)
4
+
5
+ * [#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
+ * [#65](https://github.com/slack-ruby/slack-ruby-bot-server/pull/65): Updated Capybara and selenium-webdriver - [@dblock](https://github.com/dblock).
7
+ * [#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
+ * [#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
+
3
10
  #### 0.6.1 (3/29/2017)
4
11
 
5
12
  * [#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).
data/Gemfile CHANGED
@@ -2,14 +2,14 @@ source 'https://rubygems.org'
2
2
 
3
3
  case ENV['DATABASE_ADAPTER']
4
4
  when 'mongoid' then
5
- gem 'mongoid'
6
5
  gem 'kaminari-mongoid'
6
+ gem 'mongoid'
7
7
  gem 'mongoid-scroll'
8
8
  when 'activerecord' then
9
+ gem 'activerecord', '~> 5.0.0'
10
+ gem 'otr-activerecord', '~> 1.2.1'
11
+ gem 'cursor_pagination' # rubocop:disable Bundler/OrderedGems
9
12
  gem 'pg'
10
- gem 'activerecord'
11
- gem 'otr-activerecord'
12
- gem 'cursor_pagination'
13
13
  when nil then
14
14
  warn "Missing ENV['DATABASE_ADAPTER']."
15
15
  else
@@ -19,23 +19,23 @@ end
19
19
  gemspec
20
20
 
21
21
  group :development, :test do
22
- gem 'rack-server-pages'
23
22
  gem 'bundler'
24
- gem 'rake'
25
- gem 'rspec'
26
- gem 'rubocop', '0.40.0'
27
23
  gem 'byebug'
28
- gem 'mongoid-shell'
29
- gem 'heroku'
30
- gem 'rack-test'
31
- gem 'webmock'
32
- gem 'vcr'
24
+ gem 'capybara', '~> 2.15.1'
25
+ gem 'database_cleaner'
33
26
  gem 'fabrication'
34
27
  gem 'faker'
35
- gem 'database_cleaner'
28
+ gem 'heroku'
36
29
  gem 'hyperclient'
37
- gem 'capybara'
38
- gem 'selenium-webdriver', '~> 2.5'
30
+ gem 'mongoid-shell'
31
+ gem 'rack-server-pages'
32
+ gem 'rack-test'
33
+ gem 'rake'
34
+ gem 'rspec'
35
+ gem 'rubocop', '0.58.2'
36
+ gem 'selenium-webdriver', '~> 3.4.4'
37
+ gem 'vcr'
38
+ gem 'webmock'
39
39
  end
40
40
 
41
41
  group :test do
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2015-2016 Daniel Doubrovkine
3
+ Copyright (c) 2015-2017 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
@@ -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.6.1. See [UPGRADING](UPGRADING.md) when upgrading from an older version.
16
+ You're reading the documentation for the **stable** release of slack-ruby-bot-server, 0.7.0. See [UPGRADING](UPGRADING.md) when upgrading from an older version.
17
17
 
18
18
  ### Try Me
19
19
 
@@ -152,16 +152,44 @@ SlackRubyBotServer.configure do |config|
152
152
  end
153
153
  ```
154
154
 
155
+ #### Ping Worker
156
+
157
+ Each `SlackRubyBotServer::Server` instance will start a ping worker that will periodically check the online status of the bot via the Slack web [auth.test](https://api.slack.com/methods/auth.test) and [users.getPresence](https://api.slack.com/methods/users.getPresence) APIs, and will forcefully close the connection if the bot goes offline, causing an automatic reconnect.
158
+
159
+ You can configure the ping interval, number of retries before restart, and disable the ping worker entirely.
160
+
161
+ ```ruby
162
+ SlackRubyBotServer.configure do |config|
163
+ config.ping = {
164
+ enabled: true, # set to false to disable the ping worker
165
+ ping_interval: 30, # interval in seconds
166
+ retry_count: 3 # number of unsuccessful retries until a restart
167
+ }
168
+ end
169
+ ```
170
+
171
+ ### Access Tokens
172
+
173
+ By default the implementation of [Team](lib/slack-ruby-bot-server/models/team) stores a `bot_access_token` that grants a certain amount of privileges to the bot user as described in [Slack OAuth Docs](https://api.slack.com/docs/oauth). You may not want a bot user at all, or may require different auth scopes, such as `users.profile:read` to access user profile information via `Slack::Web::Client#users_profile_get`. To obtain the non-bot access token make the following changes.
174
+
175
+ 1) Configure your app to require additional scopes in Slack API under _OAuth_, _Permissions_
176
+ 2) Add `access_token` and, optionally, `scope` to your `Team` model
177
+ 3) Change the _Add to Slack_ buttons to require the additional scope, eg. `https://slack.com/oauth/authorize?scope=bot,users.profile:read&client_id=...`
178
+ 4) Store the access token returned from `Slack::Web::Client#oauth_access` and scope when creating a team in your `Teams` API endpoint.
179
+
180
+ You can see a sample implementation in [slack-sup#3a497b](https://github.com/dblock/slack-sup/commit/3a497b436d25d3a7738562655cda64b180ae0096).
181
+
155
182
  ### Examples Using Slack Ruby Bot Server
156
183
 
157
184
  * [slack-amber-alert](https://github.com/dblock/slack-amber-alert), free service at [missingkidsbot.org](https://www.missingkidsbot.org)
185
+ * [slack-sup](https://github.com/dblock/slack-sup), free service at [sup.playplay.io](https://sup.playplay.io)
158
186
  * [slack-gamebot](https://github.com/dblock/slack-gamebot), free service at [www.playplay.io](https://www.playplay.io)
159
187
  * [slack-market](https://github.com/dblock/slack-market), free service at [market.playplay.io](https://market.playplay.io)
160
- * [slack-shallbot](https://github.com/slack-ruby/slack-shellbot), free service at [shell.playplay.io](https://shell.playplay.io)
188
+ * [slack-shellbot](https://github.com/slack-ruby/slack-shellbot), free service at [shell.playplay.io](https://shell.playplay.io)
161
189
  * [slack-api-explorer](https://github.com/slack-ruby/slack-api-explorer), free service at [api-explorer.playplay.io](https://shell.playplay.io)
162
190
 
163
191
  ### Copyright & License
164
192
 
165
- Copyright [Daniel Doubrovkine](http://code.dblock.org), 2015-2016
193
+ Copyright [Daniel Doubrovkine](http://code.dblock.org) and Contributors, 2015-2017
166
194
 
167
195
  [MIT License](LICENSE)
data/Rakefile CHANGED
@@ -11,6 +11,6 @@ end
11
11
  require 'rubocop/rake_task'
12
12
  RuboCop::RakeTask.new
13
13
 
14
- task default: [:rubocop, :spec]
14
+ task default: %i[rubocop spec]
15
15
 
16
16
  import 'tasks/db.rake'
@@ -1,6 +1,24 @@
1
1
  Upgrading Slack-Ruby-Bot-Server
2
2
  ===============================
3
3
 
4
+ ### Upgrading to >= 0.7.0
5
+
6
+ #### New Ping Worker
7
+
8
+ Version 0.7.0 will automatically start a ping worker that checks for the bot's online status and forcefully terminate and restart disconnected bots. Set the ping `enabled` option to `false` to disable this behavior.
9
+
10
+ ```ruby
11
+ SlackRubyBotServer.configure do |config|
12
+ config.ping = {
13
+ enabled: false
14
+ }
15
+ end
16
+ ```
17
+
18
+ If you are currently using a custom ping worker as suggested in [slack-ruby-client#208](https://github.com/slack-ruby/slack-ruby-client/issues/208), delete it.
19
+
20
+ See [#74](https://github.com/slack-ruby/slack-ruby-bot-server/pull/74) for more information.
21
+
4
22
  ### Upgrading to >= 0.6.0
5
23
 
6
24
  #### Mongoid and ActiveRecord support
@@ -3,6 +3,7 @@ require 'celluloid/current'
3
3
  require 'grape-swagger'
4
4
  require 'slack-ruby-bot'
5
5
  require 'slack-ruby-bot-server/server'
6
+ require 'slack-ruby-bot-server/ping'
6
7
  require 'slack-ruby-bot-server/config'
7
8
 
8
9
  require 'slack-ruby-bot-server/ext'
@@ -12,7 +12,7 @@ module SlackRubyBotServer
12
12
  mutually_exclusive :offset, :cursor
13
13
  end
14
14
 
15
- ALL = %w(cursor size sort offset total_count).freeze
15
+ ALL = %w[cursor size sort offset total_count].freeze
16
16
  end
17
17
  end
18
18
  end
@@ -8,19 +8,19 @@ module SlackRubyBotServer
8
8
  class Middleware
9
9
  def self.logger
10
10
  @logger ||= begin
11
- $stdout.sync = true
11
+ STDOUT.sync = true
12
12
  Logger.new(STDOUT)
13
13
  end
14
14
  end
15
15
 
16
16
  def self.instance
17
17
  @instance ||= Rack::Builder.new do
18
- use OTR::ActiveRecord::ConnectionManagement if SlackRubyBotServer::Config.activerecord?
18
+ use OTR::ActiveRecord::ConnectionManagement if SlackRubyBotServer::Config.activerecord? && defined?(::OTR)
19
19
 
20
20
  use Rack::Cors do
21
21
  allow do
22
22
  origins '*'
23
- resource '*', headers: :any, methods: [:get, :post]
23
+ resource '*', headers: :any, methods: %i[get post]
24
24
  end
25
25
  end
26
26
 
@@ -18,7 +18,7 @@ module SlackRubyBotServer
18
18
 
19
19
  def logger
20
20
  @logger ||= begin
21
- $stdout.sync = true
21
+ STDOUT.sync = true
22
22
  Logger.new(STDOUT)
23
23
  end
24
24
  end
@@ -3,9 +3,11 @@ module SlackRubyBotServer
3
3
  extend self
4
4
 
5
5
  attr_accessor :server_class
6
+ attr_accessor :ping
6
7
  attr_accessor :database_adapter
7
8
 
8
9
  def reset!
10
+ self.ping = nil
9
11
  self.server_class = SlackRubyBotServer::Server
10
12
  self.database_adapter = if defined?(::Mongoid)
11
13
  :mongoid
@@ -1,3 +1,3 @@
1
- %w(bson/object_id grape/sort_extension slack-ruby-bot).each do |ext|
1
+ %w[bson/object_id grape/sort_extension slack-ruby-bot].each do |ext|
2
2
  require_relative "ext/#{ext}"
3
3
  end
@@ -8,6 +8,7 @@ module SlackRubyBot
8
8
  _invoke client, data
9
9
  rescue StandardError => e
10
10
  logger.info "#{name.demodulize.upcase}: #{client.owner}, #{e.class}: #{e}"
11
+ logger.debug e.backtrace.join("\n")
11
12
  client.say(channel: data.channel, text: e.message, gif: 'error')
12
13
  true
13
14
  end
@@ -12,6 +12,7 @@ module SlackRubyBot
12
12
  true
13
13
  rescue StandardError => e
14
14
  logger.info "#{name.demodulize.upcase}: #{client.owner}, #{e.class}: #{e}"
15
+ logger.debug e.backtrace.join("\n")
15
16
  client.say(channel: data.channel, text: e.message, gif: 'error')
16
17
  true
17
18
  end
@@ -0,0 +1,99 @@
1
+ module SlackRubyBotServer
2
+ class Ping
3
+ include Celluloid
4
+
5
+ attr_reader :client
6
+ attr_reader :options
7
+ attr_reader :error_count
8
+
9
+ def initialize(client, options = {})
10
+ @options = options
11
+ @client = client
12
+ @error_count = 0
13
+ end
14
+
15
+ def start!
16
+ every ping_interval do
17
+ check!
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ def check!
24
+ if online?
25
+ @error_count = 0
26
+ else
27
+ down!
28
+ end
29
+ rescue StandardError => e
30
+ case e.message
31
+ when 'account_inactive', 'invalid_auth' then
32
+ logger.warn "Error pinging team #{owner.id}: #{e.message}, terminating."
33
+ terminate
34
+ else
35
+ logger.warn "Error pinging team #{owner.id}: #{e.message}."
36
+ end
37
+ end
38
+
39
+ def offline?
40
+ !online?
41
+ end
42
+
43
+ def online?
44
+ presence.online
45
+ end
46
+
47
+ def presence
48
+ owner.ping![:presence]
49
+ end
50
+
51
+ def down!
52
+ logger.warn "DOWN: #{owner}, #{retries_left} #{retries_left == 1 ? 'retry' : 'retries'} left"
53
+ @error_count += 1
54
+ return if retries_left?
55
+ restart!
56
+ end
57
+
58
+ def restart!
59
+ logger.warn "RESTART: #{owner}"
60
+ driver.emit(:close, WebSocket::Driver::CloseEvent.new(1001, 'bot offline')) if driver
61
+ terminate
62
+ end
63
+
64
+ def ping_interval
65
+ options[:ping_interval] || 60
66
+ end
67
+
68
+ def retries_left?
69
+ retries_left >= 0
70
+ end
71
+
72
+ def retries_left
73
+ retry_count - error_count
74
+ end
75
+
76
+ def retry_count
77
+ options[:retry_count] || 2
78
+ end
79
+
80
+ def socket
81
+ client.instance_variable_get(:@socket) if client
82
+ end
83
+
84
+ def driver
85
+ socket.instance_variable_get(:@driver) if socket
86
+ end
87
+
88
+ def logger
89
+ @logger ||= begin
90
+ STDOUT.sync = true
91
+ Logger.new(STDOUT)
92
+ end
93
+ end
94
+
95
+ def owner
96
+ client.owner
97
+ end
98
+ end
99
+ end
@@ -7,10 +7,11 @@ module SlackRubyBotServer
7
7
  def initialize(attrs = {})
8
8
  attrs = attrs.dup
9
9
  @team = attrs.delete(:team)
10
+ @ping_options = attrs.delete(:ping) || {}
10
11
  raise 'Missing team' unless @team
11
12
  attrs[:token] = @team.token
12
13
  super(attrs)
13
- client.owner = @team
14
+ open!
14
15
  end
15
16
 
16
17
  def restart!(wait = 1)
@@ -18,7 +19,24 @@ module SlackRubyBotServer
18
19
  # it would keep retrying without checking for account_inactive or such, we want to restart via service which will disable an inactive team
19
20
  logger.info "#{team.name}: socket closed, restarting ..."
20
21
  SlackRubyBotServer::Service.instance.restart! team, self, wait
22
+ open!
23
+ end
24
+
25
+ private
26
+
27
+ attr_reader :ping_options
28
+
29
+ def create_ping
30
+ return unless !ping_options.key?(:enabled) || ping_options[:enabled]
31
+ SlackRubyBotServer::Ping.new(client, ping_options)
32
+ end
33
+
34
+ def open!
21
35
  client.owner = team
36
+ client.on :open do |_event|
37
+ worker = create_ping
38
+ worker.start! if worker
39
+ end
22
40
  end
23
41
  end
24
42
  end
@@ -30,7 +30,9 @@ module SlackRubyBotServer
30
30
  def start!(team)
31
31
  run_callbacks :starting, team
32
32
  logger.info "Starting team #{team}."
33
- server = SlackRubyBotServer::Config.server_class.new(team: team)
33
+ options = { team: team }
34
+ options[:ping] = SlackRubyBotServer::Config.ping if SlackRubyBotServer::Config.ping
35
+ server = SlackRubyBotServer::Config.server_class.new(options)
34
36
  start_server! team, server
35
37
  run_callbacks :started, team
36
38
  server
@@ -1,3 +1,3 @@
1
1
  module SlackRubyBotServer
2
- VERSION = '0.6.1'.freeze
2
+ VERSION = '0.7.0'.freeze
3
3
  end
@@ -1,23 +1,23 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'pg'
4
- gem 'activerecord', require: 'active_record'
5
- gem 'slack-ruby-bot-server', path: '../../'
3
+ gem 'activerecord', '~> 5.0.0', require: 'active_record'
6
4
  gem 'newrelic-slack-ruby-bot'
5
+ gem 'otr-activerecord', '~> 1.2.1'
6
+ gem 'pg'
7
7
  gem 'rack-server-pages'
8
8
  gem 'rack-test'
9
- gem 'otr-activerecord'
9
+ gem 'slack-ruby-bot-server', path: '../../'
10
10
 
11
11
  group :development, :test do
12
- gem 'standalone_migrations'
12
+ gem 'standalone_migrations', '~> 5.2'
13
13
  end
14
14
 
15
15
  group :test do
16
- gem 'rake'
17
- gem 'rspec'
16
+ gem 'database_cleaner'
18
17
  gem 'fabrication'
19
18
  gem 'faker'
19
+ gem 'rake'
20
+ gem 'rspec'
20
21
  gem 'vcr'
21
22
  gem 'webmock'
22
- gem 'database_cleaner'
23
23
  end
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ require 'bundler/setup'
2
3
 
3
4
  require 'rspec/core'
4
5
  require 'rspec/core/rake_task'
@@ -10,7 +10,7 @@ help - get this helpful message
10
10
  whoami - print your username
11
11
 
12
12
  ```
13
- EOS
13
+ EOS
14
14
  def self.call(client, data, _match)
15
15
  client.say(channel: data.channel, text: [HELP, SlackRubyBotServer::INFO].join("\n"))
16
16
  client.say(channel: data.channel, gif: 'help')
@@ -11,6 +11,6 @@ describe 'API' do
11
11
  get '/api'
12
12
  expect(last_response.status).to eq 200
13
13
  links = JSON.parse(last_response.body)['_links']
14
- expect(links.keys.sort).to eq(%w(self status team teams).sort)
14
+ expect(links.keys.sort).to eq(%w[self status team teams].sort)
15
15
  end
16
16
  end
@@ -6,7 +6,7 @@ require 'active_record'
6
6
  require 'database_cleaner'
7
7
  require 'slack-ruby-bot-server/rspec'
8
8
 
9
- db_config = YAML.load(File.read(File.expand_path('../config/postgresql.yml', __dir__)))[ENV['RACK_ENV']]
9
+ db_config = YAML.safe_load(File.read(File.expand_path('../config/postgresql.yml', __dir__)), [], [], true)[ENV['RACK_ENV']]
10
10
  ActiveRecord::Tasks::DatabaseTasks.create(db_config)
11
11
  ActiveRecord::Base.establish_connection(db_config)
12
12
 
@@ -1,19 +1,19 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'mongoid'
4
- gem 'slack-ruby-bot-server', path: '../../'
5
4
  gem 'newrelic-slack-ruby-bot'
5
+ gem 'slack-ruby-bot-server', path: '../../'
6
6
 
7
7
  gem 'kaminari-mongoid'
8
8
  gem 'mongoid-scroll'
9
9
 
10
10
  group :test do
11
- gem 'rake'
12
- gem 'rspec'
11
+ gem 'database_cleaner'
13
12
  gem 'fabrication'
14
13
  gem 'faker'
14
+ gem 'rack-test'
15
+ gem 'rake'
16
+ gem 'rspec'
15
17
  gem 'vcr'
16
18
  gem 'webmock'
17
- gem 'database_cleaner'
18
- gem 'rack-test'
19
19
  end
@@ -10,7 +10,7 @@ help - get this helpful message
10
10
  whoami - print your username
11
11
 
12
12
  ```
13
- EOS
13
+ EOS
14
14
  def self.call(client, data, _match)
15
15
  client.say(channel: data.channel, text: [HELP, SlackRubyBotServer::INFO].join("\n"))
16
16
  client.say(channel: data.channel, gif: 'help')
@@ -11,6 +11,6 @@ describe 'API' do
11
11
  get '/api'
12
12
  expect(last_response.status).to eq 200
13
13
  links = JSON.parse(last_response.body)['_links']
14
- expect(links.keys.sort).to eq(%w(self status team teams).sort)
14
+ expect(links.keys.sort).to eq(%w[self status team teams].sort)
15
15
  end
16
16
  end
@@ -1,5 +1,4 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'slack-ruby-bot-server/version'
5
4
 
@@ -15,15 +14,15 @@ Gem::Specification.new do |spec|
15
14
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec)/}) }
16
15
  spec.require_paths = ['lib']
17
16
 
18
- spec.add_dependency 'slack-ruby-bot'
19
17
  spec.add_dependency 'celluloid-io'
20
- spec.add_dependency 'unicorn'
18
+ spec.add_dependency 'foreman'
21
19
  spec.add_dependency 'grape'
22
- spec.add_dependency 'grape-swagger'
23
20
  spec.add_dependency 'grape-roar', '>= 0.4.0'
24
- spec.add_dependency 'rack-cors'
21
+ spec.add_dependency 'grape-swagger'
25
22
  spec.add_dependency 'kaminari-grape'
23
+ spec.add_dependency 'rack-cors'
26
24
  spec.add_dependency 'rack-rewrite'
27
25
  spec.add_dependency 'rack-server-pages'
28
- spec.add_dependency 'foreman'
26
+ spec.add_dependency 'slack-ruby-bot'
27
+ spec.add_dependency 'unicorn'
29
28
  end
@@ -1,7 +1,7 @@
1
1
  namespace :db do
2
2
  def logger
3
3
  @logger ||= begin
4
- $stdout.sync = true
4
+ STDOUT.sync = true
5
5
  Logger.new(STDOUT)
6
6
  end
7
7
  end
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.6.1
4
+ version: 0.7.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: 2017-03-30 00:00:00.000000000 Z
11
+ date: 2018-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: slack-ruby-bot
14
+ name: celluloid-io
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: celluloid-io
28
+ name: foreman
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: unicorn
42
+ name: grape
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,19 +53,19 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: grape
56
+ name: grape-roar
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 0.4.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 0.4.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: grape-swagger
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -81,19 +81,19 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: grape-roar
84
+ name: kaminari-grape
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 0.4.0
89
+ version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 0.4.0
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rack-cors
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: kaminari-grape
112
+ name: rack-rewrite
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
@@ -123,7 +123,7 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: rack-rewrite
126
+ name: rack-server-pages
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: rack-server-pages
140
+ name: slack-ruby-bot
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -151,7 +151,7 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: foreman
154
+ name: unicorn
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
@@ -225,6 +225,7 @@ files:
225
225
  - lib/slack-ruby-bot-server/models/team/activerecord.rb
226
226
  - lib/slack-ruby-bot-server/models/team/methods.rb
227
227
  - lib/slack-ruby-bot-server/models/team/mongoid.rb
228
+ - lib/slack-ruby-bot-server/ping.rb
228
229
  - lib/slack-ruby-bot-server/rspec.rb
229
230
  - lib/slack-ruby-bot-server/rspec/fabricators/team.rb
230
231
  - lib/slack-ruby-bot-server/server.rb
@@ -294,7 +295,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
294
295
  version: '0'
295
296
  requirements: []
296
297
  rubyforge_project:
297
- rubygems_version: 2.6.10
298
+ rubygems_version: 2.6.12
298
299
  signing_key:
299
300
  specification_version: 4
300
301
  summary: A Grape API serving a Slack bot to multiple teams.