slack-ruby-bot-server 0.12.1 → 1.2.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.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.rubocop_todo.yml +4 -9
  4. data/.travis.yml +0 -1
  5. data/CHANGELOG.md +22 -0
  6. data/DEBUGGING.md +0 -20
  7. data/Dangerfile +1 -0
  8. data/Gemfile +1 -0
  9. data/README.md +69 -74
  10. data/UPGRADING.md +43 -0
  11. data/lib/slack-ruby-bot-server.rb +3 -3
  12. data/lib/slack-ruby-bot-server/api/endpoints/teams_endpoint.rb +44 -9
  13. data/lib/slack-ruby-bot-server/api/middleware.rb +4 -5
  14. data/lib/slack-ruby-bot-server/app.rb +2 -14
  15. data/lib/slack-ruby-bot-server/config.rb +32 -2
  16. data/lib/slack-ruby-bot-server/config/database_adapters/activerecord.rb +2 -0
  17. data/lib/slack-ruby-bot-server/ext.rb +1 -1
  18. data/lib/slack-ruby-bot-server/ext/mongoid/slack-ruby-bot/commands/base.rb +2 -2
  19. data/lib/slack-ruby-bot-server/loggable.rb +25 -0
  20. data/lib/slack-ruby-bot-server/models/team/methods.rb +21 -1
  21. data/lib/slack-ruby-bot-server/models/team/mongoid.rb +2 -0
  22. data/lib/slack-ruby-bot-server/rspec.rb +0 -1
  23. data/lib/slack-ruby-bot-server/service.rb +7 -33
  24. data/lib/slack-ruby-bot-server/version.rb +1 -1
  25. data/public/index.html.erb +1 -1
  26. data/slack-ruby-bot-server.gemspec +2 -2
  27. data/tasks/db.rake +0 -36
  28. metadata +16 -55
  29. data/images/slackbotserver.gif +0 -0
  30. data/images/slackbutton.gif +0 -0
  31. data/lib/slack-ruby-bot-server/ext/activerecord/slack-ruby-bot/commands/base.rb +0 -18
  32. data/lib/slack-ruby-bot-server/ext/slack-ruby-bot.rb +0 -2
  33. data/lib/slack-ruby-bot-server/ext/slack-ruby-bot/client.rb +0 -12
  34. data/lib/slack-ruby-bot-server/server.rb +0 -31
  35. data/sample_apps/README.md +0 -11
  36. data/sample_apps/sample_app_activerecord/.rspec +0 -3
  37. data/sample_apps/sample_app_activerecord/.standalone_migrations +0 -3
  38. data/sample_apps/sample_app_activerecord/Gemfile +0 -24
  39. data/sample_apps/sample_app_activerecord/Procfile +0 -1
  40. data/sample_apps/sample_app_activerecord/README.md +0 -12
  41. data/sample_apps/sample_app_activerecord/Rakefile +0 -14
  42. data/sample_apps/sample_app_activerecord/commands.rb +0 -2
  43. data/sample_apps/sample_app_activerecord/commands/help.rb +0 -19
  44. data/sample_apps/sample_app_activerecord/commands/whoami.rb +0 -6
  45. data/sample_apps/sample_app_activerecord/config.ru +0 -22
  46. data/sample_apps/sample_app_activerecord/config/newrelic.yml +0 -217
  47. data/sample_apps/sample_app_activerecord/config/postgresql.yml +0 -17
  48. data/sample_apps/sample_app_activerecord/db/migrate/20170307164946_create_teams_table.rb +0 -12
  49. data/sample_apps/sample_app_activerecord/db/migrate/20190323181453_add_activated_fields.rb +0 -7
  50. data/sample_apps/sample_app_activerecord/db/schema.rb +0 -29
  51. data/sample_apps/sample_app_activerecord/spec/api/root_spec.rb +0 -16
  52. data/sample_apps/sample_app_activerecord/spec/commands/help_spec.rb +0 -14
  53. data/sample_apps/sample_app_activerecord/spec/commands/whoami_spec.rb +0 -14
  54. data/sample_apps/sample_app_activerecord/spec/spec_helper.rb +0 -19
  55. data/sample_apps/sample_app_mongoid/.rspec +0 -3
  56. data/sample_apps/sample_app_mongoid/Gemfile +0 -20
  57. data/sample_apps/sample_app_mongoid/Procfile +0 -1
  58. data/sample_apps/sample_app_mongoid/README.md +0 -14
  59. data/sample_apps/sample_app_mongoid/Rakefile +0 -10
  60. data/sample_apps/sample_app_mongoid/commands.rb +0 -2
  61. data/sample_apps/sample_app_mongoid/commands/help.rb +0 -19
  62. data/sample_apps/sample_app_mongoid/commands/whoami.rb +0 -6
  63. data/sample_apps/sample_app_mongoid/config.ru +0 -14
  64. data/sample_apps/sample_app_mongoid/config/mongoid.yml +0 -27
  65. data/sample_apps/sample_app_mongoid/config/newrelic.yml +0 -217
  66. data/sample_apps/sample_app_mongoid/spec/api/root_spec.rb +0 -16
  67. data/sample_apps/sample_app_mongoid/spec/commands/help_spec.rb +0 -14
  68. data/sample_apps/sample_app_mongoid/spec/commands/whoami_spec.rb +0 -14
  69. data/sample_apps/sample_app_mongoid/spec/spec_helper.rb +0 -27
@@ -6,11 +6,10 @@ require 'otr-activerecord' if SlackRubyBotServer::Config.activerecord? && !defin
6
6
  module SlackRubyBotServer
7
7
  module Api
8
8
  class Middleware
9
- def self.logger
10
- @logger ||= begin
11
- STDOUT.sync = true
12
- Logger.new(STDOUT)
13
- end
9
+ include SlackRubyBotServer::Loggable
10
+
11
+ def self.reset!
12
+ @instance = nil
14
13
  end
15
14
 
16
15
  def self.instance
@@ -1,10 +1,11 @@
1
1
  module SlackRubyBotServer
2
2
  class App
3
+ include SlackRubyBotServer::Loggable
4
+
3
5
  def prepare!
4
6
  check_database!
5
7
  init_database!
6
8
  purge_inactive_teams!
7
- configure_global_aliases!
8
9
  end
9
10
 
10
11
  def self.instance
@@ -13,13 +14,6 @@ module SlackRubyBotServer
13
14
 
14
15
  private
15
16
 
16
- def logger
17
- @logger ||= begin
18
- STDOUT.sync = true
19
- Logger.new(STDOUT)
20
- end
21
- end
22
-
23
17
  def check_database!
24
18
  SlackRubyBotServer::DatabaseAdapter.check!
25
19
  end
@@ -31,11 +25,5 @@ module SlackRubyBotServer
31
25
  def purge_inactive_teams!
32
26
  Team.purge!
33
27
  end
34
-
35
- def configure_global_aliases!
36
- SlackRubyBot.configure do |config|
37
- config.aliases = ENV['SLACK_RUBY_BOT_ALIASES'].split(' ') if ENV['SLACK_RUBY_BOT_ALIASES']
38
- end
39
- end
40
28
  end
41
29
  end
@@ -2,14 +2,18 @@ module SlackRubyBotServer
2
2
  module Config
3
3
  extend self
4
4
 
5
- attr_accessor :server_class
5
+ attr_accessor :logger
6
6
  attr_accessor :service_class
7
7
  attr_accessor :database_adapter
8
8
  attr_accessor :view_paths
9
+ attr_accessor :oauth_scope
10
+ attr_accessor :oauth_version
9
11
 
10
12
  def reset!
11
- self.server_class = SlackRubyBotServer::Server
13
+ self.logger = nil
12
14
  self.service_class = SlackRubyBotServer::Service
15
+ self.oauth_scope = nil
16
+ self.oauth_version = :v2
13
17
 
14
18
  self.view_paths = [
15
19
  'views',
@@ -26,6 +30,32 @@ module SlackRubyBotServer
26
30
  end
27
31
  end
28
32
 
33
+ def oauth_authorize_url
34
+ case oauth_version
35
+ when :v2
36
+ 'https://slack.com/oauth/v2/authorize'
37
+ when :v1
38
+ 'https://slack.com/oauth/authorize'
39
+ else
40
+ raise ArgumentError, 'Invalid oauth_version, must be one of :v1 or v2.'
41
+ end
42
+ end
43
+
44
+ def oauth_access_method
45
+ case oauth_version
46
+ when :v2
47
+ :oauth_v2_access
48
+ when :v1
49
+ :oauth_access
50
+ else
51
+ raise ArgumentError, 'Invalid oauth_version, must be one of :v1 or v2.'
52
+ end
53
+ end
54
+
55
+ def oauth_scope_s
56
+ oauth_scope&.join('+')
57
+ end
58
+
29
59
  def activerecord?
30
60
  database_adapter == :activerecord
31
61
  end
@@ -18,6 +18,8 @@ module SlackRubyBotServer
18
18
  t.string :name
19
19
  t.string :domain
20
20
  t.string :token
21
+ t.string :oauth_scope
22
+ t.string :oauth_version, default: 'v1', null: false
21
23
  t.string :bot_user_id
22
24
  t.string :activated_user_id
23
25
  t.string :activated_user_access_token
@@ -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].each do |ext|
2
2
  require_relative "ext/#{ext}"
3
3
  end
@@ -8,12 +8,12 @@ module SlackRubyBot
8
8
  _invoke client, data
9
9
  rescue Mongoid::Errors::Validations => e
10
10
  logger.info "#{name.demodulize.upcase}: #{client.owner}, error - #{e.document.class}, #{e.document.errors.to_hash}"
11
- client.say(channel: data.channel, text: e.document.errors.first[1], gif: 'error')
11
+ client.say(channel: data.channel, text: e.document.errors.first[1])
12
12
  true
13
13
  rescue StandardError => e
14
14
  logger.info "#{name.demodulize.upcase}: #{client.owner}, #{e.class}: #{e}"
15
15
  logger.debug e.backtrace.join("\n")
16
- client.say(channel: data.channel, text: e.message, gif: 'error')
16
+ client.say(channel: data.channel, text: e.message)
17
17
  true
18
18
  end
19
19
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SlackRubyBotServer
4
+ module Loggable
5
+ def self.included(base)
6
+ base.send :include, InstanceMethods
7
+ base.extend(ClassMethods)
8
+ end
9
+
10
+ module ClassMethods
11
+ def logger
12
+ @logger ||= SlackRubyBotServer::Config.logger || begin
13
+ $stdout.sync = true
14
+ Logger.new($stdout)
15
+ end
16
+ end
17
+ end
18
+
19
+ module InstanceMethods
20
+ def logger
21
+ self.class.logger
22
+ end
23
+ end
24
+ end
25
+ end
@@ -32,11 +32,31 @@ module Methods
32
32
 
33
33
  def ping!
34
34
  client = Slack::Web::Client.new(token: token)
35
+
35
36
  auth = client.auth_test
37
+
38
+ presence = begin
39
+ client.users_getPresence(user: auth['user_id'])
40
+ rescue Slack::Web::Api::Errors::MissingScope
41
+ nil
42
+ end
43
+
36
44
  {
37
45
  auth: auth,
38
- presence: client.users_getPresence(user: auth['user_id'])
46
+ presence: presence
39
47
  }
40
48
  end
49
+
50
+ def ping_if_active!
51
+ return unless active?
52
+
53
+ ping!
54
+ rescue Slack::Web::Api::Errors::SlackError => e
55
+ logger.warn "Active team #{self} ping, #{e.message}."
56
+ case e.message
57
+ when 'account_inactive', 'invalid_auth'
58
+ deactivate!
59
+ end
60
+ end
41
61
  end
42
62
  end
@@ -8,6 +8,8 @@ class Team
8
8
  field :name, type: String
9
9
  field :domain, type: String
10
10
  field :token, type: String
11
+ field :oauth_scope, type: String
12
+ field :oauth_version, type: String, default: 'v1'
11
13
  field :active, type: Boolean, default: true
12
14
  field :bot_user_id, type: String
13
15
  field :activated_user_id, type: String
@@ -1,4 +1,3 @@
1
- require 'slack-ruby-bot/rspec'
2
1
  require 'slack-ruby-bot-server'
3
2
  require 'fabrication'
4
3
  require 'faker'
@@ -1,6 +1,6 @@
1
1
  module SlackRubyBotServer
2
2
  class Service
3
- include SlackRubyBot::Loggable
3
+ include SlackRubyBotServer::Loggable
4
4
 
5
5
  def self.start!
6
6
  Thread.new do
@@ -47,34 +47,30 @@ module SlackRubyBotServer
47
47
  end
48
48
 
49
49
  def start!(team)
50
- run_callbacks :starting, team
51
50
  logger.info "Starting team #{team}."
52
- options = { team: team }
53
- server = SlackRubyBotServer::Config.server_class.new(options)
54
- start_server! team, server
51
+ run_callbacks :starting, team
55
52
  run_callbacks :started, team
56
- server
57
53
  rescue StandardError => e
58
54
  run_callbacks :error, team, e
59
55
  logger.error e
60
56
  end
61
57
 
62
- def restart!(team, server, wait = 1)
58
+ def restart!(team)
59
+ logger.info "Restarting team #{team}."
63
60
  run_callbacks :restarting, team
64
- start_server! team, server, wait
65
61
  run_callbacks :restarted, team
62
+ rescue StandardError => e
63
+ run_callbacks :error, team, e
64
+ logger.error e
66
65
  end
67
66
 
68
67
  def stop!(team)
69
68
  logger.info "Stopping team #{team}."
70
69
  run_callbacks :stopping, team
71
- team.server&.stop!
72
70
  run_callbacks :stopped, team
73
71
  rescue StandardError => e
74
72
  run_callbacks :error, team, e
75
73
  logger.error e
76
- ensure
77
- team.server = nil
78
74
  end
79
75
 
80
76
  def start_from_database!
@@ -98,14 +94,9 @@ module SlackRubyBotServer
98
94
  run_callbacks :deactivating, team
99
95
  team.deactivate!
100
96
  run_callbacks :deactivated, team
101
- rescue Mongoid::Errors::Validations => e
102
- run_callbacks :error, team, e
103
- logger.error "#{team.name}: #{e.message}, error - #{e.document.class}, #{e.document.errors.to_hash}, ignored."
104
97
  rescue StandardError => e
105
98
  run_callbacks :error, team, e
106
99
  logger.error "#{team.name}: #{e.class}, #{e.message}, ignored."
107
- ensure
108
- team.server = nil
109
100
  end
110
101
 
111
102
  def self.reset!
@@ -127,23 +118,6 @@ module SlackRubyBotServer
127
118
  end
128
119
  end
129
120
 
130
- def start_server!(team, server, wait = 1)
131
- team.server = server
132
- server.start_async
133
- rescue StandardError => e
134
- run_callbacks :error, team, e
135
- case e.message
136
- when 'account_inactive', 'invalid_auth' then
137
- logger.error "#{team.name}: #{e.message}, team will be deactivated."
138
- deactivate!(team)
139
- else
140
- wait = e.retry_after if e.is_a?(Slack::Web::Api::Errors::TooManyRequestsError)
141
- logger.error "#{team.name}: #{e.message}, restarting in #{wait} second(s)."
142
- sleep(wait)
143
- start_server! team, server, [wait * 2, 60].min
144
- end
145
- end
146
-
147
121
  def run_callbacks(type, team = nil, error = nil, options = {})
148
122
  callbacks = @callbacks[type.to_s]
149
123
  return false unless callbacks
@@ -1,3 +1,3 @@
1
1
  module SlackRubyBotServer
2
- VERSION = '0.12.1'.freeze
2
+ VERSION = '1.2.0'.freeze
3
3
  end
@@ -16,7 +16,7 @@
16
16
  </p>
17
17
  <p id='messages' />
18
18
  <p id='register'>
19
- <a href="https://slack.com/oauth/authorize?scope=bot&client_id=<%= ENV['SLACK_CLIENT_ID'] %>"><img alt="Add to Slack" height="40" width="139" src="https://platform.slack-edge.com/img/add_to_slack.png" srcset="https://platform.slack-edge.com/img/add_to_slack.png 1x, https://platform.slack-edge.com/img/add_to_slack@2x.png 2x"></a>
19
+ <a href="<%= SlackRubyBotServer::Config.oauth_authorize_url %>?scope=<%= SlackRubyBotServer::Config.oauth_scope_s %>&client_id=<%= ENV['SLACK_CLIENT_ID'] %>"><img alt="Add to Slack" height="40" width="139" src="https://platform.slack-edge.com/img/add_to_slack.png" srcset="https://platform.slack-edge.com/img/add_to_slack.png 1x, https://platform.slack-edge.com/img/add_to_slack@2x.png 2x"></a>
20
20
  </p>
21
21
  <p id='active_teams_count'>&nbsp;</p>
22
22
  <p>
@@ -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 'async-websocket', '~> 0.8.0'
17
+ spec.add_dependency 'async'
18
18
  spec.add_dependency 'foreman'
19
19
  spec.add_dependency 'grape'
20
20
  spec.add_dependency 'grape-roar', '>= 0.4.0'
@@ -23,5 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.add_dependency 'rack-cors'
24
24
  spec.add_dependency 'rack-rewrite'
25
25
  spec.add_dependency 'rack-server-pages'
26
- spec.add_dependency 'slack-ruby-bot', '>= 0.12.0'
26
+ spec.add_dependency 'slack-ruby-client'
27
27
  end
@@ -5,40 +5,4 @@ namespace :db do
5
5
  Logger.new(STDOUT)
6
6
  end
7
7
  end
8
-
9
- namespace :heroku do
10
- desc 'Mongodump the BotServer database for a slack-ruby-bot-server Heroku app.'
11
- task :backup, [:app] do |_t, args|
12
- require 'mongoid-shell'
13
-
14
- logger.info("[#{Time.now}] db:heroku:backup started")
15
-
16
- # get heroku configuration info
17
- app = args[:app] || raise('Missing app.')
18
- JSON.parse(`bundle exec heroku config --app #{app} --json`).each_pair do |k, v|
19
- ENV[k] = v
20
- end
21
-
22
- # connect to MongoDB
23
- env = (ENV['RACK_ENV'] || 'development').to_s
24
- logger.info "Connecting to the #{env} environment."
25
- Mongoid.load! 'config/mongoid.yml', env
26
-
27
- # mongodump
28
- mongodump = Mongoid::Shell::Commands::Mongodump.new(session: Mongoid.default_client)
29
- mongodump.out = File.join(Dir.tmpdir, 'db/' + mongodump.host.tr(':', '_'))
30
- logger.info("[#{Time.now}] clearing (#{mongodump.out})")
31
- FileUtils.rm_rf mongodump.out if File.directory? mongodump.out
32
- logger.info("[#{Time.now}] mongodump to #{mongodump.out}")
33
- system mongodump.to_s
34
-
35
- # backup
36
- backup_name = "#{app}-#{Time.now.strftime('%Y-%m-%d-%H%M%S')}"
37
- tmp_db_filename = File.join(mongodump.out, backup_name)
38
- logger.info("[#{Time.now}] compressing (#{tmp_db_filename}.tar.gz)")
39
- system "tar -cvf #{tmp_db_filename}.tar #{mongodump.out}/#{mongodump.db}"
40
- system "gzip #{tmp_db_filename}.tar"
41
- logger.info "Created #{tmp_db_filename}.tar.gz."
42
- end
43
- end
44
8
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack-ruby-bot-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Doubrovkine
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-16 00:00:00.000000000 Z
11
+ date: 2020-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: async-websocket
14
+ name: async
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.8.0
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.8.0
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: foreman
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -137,26 +137,27 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: slack-ruby-bot
140
+ name: slack-ruby-client
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
144
144
  - !ruby/object:Gem::Version
145
- version: 0.12.0
145
+ version: '0'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: 0.12.0
153
- description:
152
+ version: '0'
153
+ description:
154
154
  email:
155
155
  - dblock@dblock.org
156
156
  executables: []
157
157
  extensions: []
158
158
  extra_rdoc_files: []
159
159
  files:
160
+ - ".github/FUNDING.yml"
160
161
  - ".gitignore"
161
162
  - ".rspec"
162
163
  - ".rubocop.yml"
@@ -174,8 +175,6 @@ files:
174
175
  - Rakefile
175
176
  - UPGRADING.md
176
177
  - images/create-app.png
177
- - images/slackbotserver.gif
178
- - images/slackbutton.gif
179
178
  - lib/slack-ruby-bot-server.rb
180
179
  - lib/slack-ruby-bot-server/api.rb
181
180
  - lib/slack-ruby-bot-server/api/endpoints.rb
@@ -199,19 +198,16 @@ files:
199
198
  - lib/slack-ruby-bot-server/config/database_adapters/activerecord.rb
200
199
  - lib/slack-ruby-bot-server/config/database_adapters/mongoid.rb
201
200
  - lib/slack-ruby-bot-server/ext.rb
202
- - lib/slack-ruby-bot-server/ext/activerecord/slack-ruby-bot/commands/base.rb
203
201
  - lib/slack-ruby-bot-server/ext/bson/object_id.rb
204
202
  - lib/slack-ruby-bot-server/ext/grape/sort_extension.rb
205
203
  - lib/slack-ruby-bot-server/ext/mongoid/slack-ruby-bot/commands/base.rb
206
- - lib/slack-ruby-bot-server/ext/slack-ruby-bot.rb
207
- - lib/slack-ruby-bot-server/ext/slack-ruby-bot/client.rb
208
204
  - lib/slack-ruby-bot-server/info.rb
205
+ - lib/slack-ruby-bot-server/loggable.rb
209
206
  - lib/slack-ruby-bot-server/models/team/activerecord.rb
210
207
  - lib/slack-ruby-bot-server/models/team/methods.rb
211
208
  - lib/slack-ruby-bot-server/models/team/mongoid.rb
212
209
  - lib/slack-ruby-bot-server/rspec.rb
213
210
  - lib/slack-ruby-bot-server/rspec/fabricators/team.rb
214
- - lib/slack-ruby-bot-server/server.rb
215
211
  - lib/slack-ruby-bot-server/service.rb
216
212
  - lib/slack-ruby-bot-server/version.rb
217
213
  - public/favicon.ico
@@ -223,48 +219,13 @@ files:
223
219
  - public/scripts/register.js
224
220
  - public/scripts/stats.js
225
221
  - public/scripts/url.min.js
226
- - sample_apps/README.md
227
- - sample_apps/sample_app_activerecord/.rspec
228
- - sample_apps/sample_app_activerecord/.standalone_migrations
229
- - sample_apps/sample_app_activerecord/Gemfile
230
- - sample_apps/sample_app_activerecord/Procfile
231
- - sample_apps/sample_app_activerecord/README.md
232
- - sample_apps/sample_app_activerecord/Rakefile
233
- - sample_apps/sample_app_activerecord/commands.rb
234
- - sample_apps/sample_app_activerecord/commands/help.rb
235
- - sample_apps/sample_app_activerecord/commands/whoami.rb
236
- - sample_apps/sample_app_activerecord/config.ru
237
- - sample_apps/sample_app_activerecord/config/newrelic.yml
238
- - sample_apps/sample_app_activerecord/config/postgresql.yml
239
- - sample_apps/sample_app_activerecord/db/migrate/20170307164946_create_teams_table.rb
240
- - sample_apps/sample_app_activerecord/db/migrate/20190323181453_add_activated_fields.rb
241
- - sample_apps/sample_app_activerecord/db/schema.rb
242
- - sample_apps/sample_app_activerecord/spec/api/root_spec.rb
243
- - sample_apps/sample_app_activerecord/spec/commands/help_spec.rb
244
- - sample_apps/sample_app_activerecord/spec/commands/whoami_spec.rb
245
- - sample_apps/sample_app_activerecord/spec/spec_helper.rb
246
- - sample_apps/sample_app_mongoid/.rspec
247
- - sample_apps/sample_app_mongoid/Gemfile
248
- - sample_apps/sample_app_mongoid/Procfile
249
- - sample_apps/sample_app_mongoid/README.md
250
- - sample_apps/sample_app_mongoid/Rakefile
251
- - sample_apps/sample_app_mongoid/commands.rb
252
- - sample_apps/sample_app_mongoid/commands/help.rb
253
- - sample_apps/sample_app_mongoid/commands/whoami.rb
254
- - sample_apps/sample_app_mongoid/config.ru
255
- - sample_apps/sample_app_mongoid/config/mongoid.yml
256
- - sample_apps/sample_app_mongoid/config/newrelic.yml
257
- - sample_apps/sample_app_mongoid/spec/api/root_spec.rb
258
- - sample_apps/sample_app_mongoid/spec/commands/help_spec.rb
259
- - sample_apps/sample_app_mongoid/spec/commands/whoami_spec.rb
260
- - sample_apps/sample_app_mongoid/spec/spec_helper.rb
261
222
  - script/console
262
223
  - slack-ruby-bot-server.gemspec
263
224
  - tasks/db.rake
264
225
  homepage: https://github.com/slack-ruby/slack-ruby-bot-server
265
226
  licenses: []
266
227
  metadata: {}
267
- post_install_message:
228
+ post_install_message:
268
229
  rdoc_options: []
269
230
  require_paths:
270
231
  - lib
@@ -280,7 +241,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
280
241
  version: '0'
281
242
  requirements: []
282
243
  rubygems_version: 3.1.3
283
- signing_key:
244
+ signing_key:
284
245
  specification_version: 4
285
246
  summary: A Grape API serving a Slack bot to multiple teams.
286
247
  test_files: []