slack-ruby-bot-server 0.12.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: []