slack-ruby-bot-server 0.12.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +4 -9
  3. data/.travis.yml +0 -1
  4. data/CHANGELOG.md +4 -0
  5. data/DEBUGGING.md +0 -20
  6. data/README.md +29 -81
  7. data/UPGRADING.md +14 -0
  8. data/lib/slack-ruby-bot-server.rb +3 -3
  9. data/lib/slack-ruby-bot-server/api/endpoints/teams_endpoint.rb +7 -3
  10. data/lib/slack-ruby-bot-server/api/middleware.rb +4 -5
  11. data/lib/slack-ruby-bot-server/config.rb +8 -2
  12. data/lib/slack-ruby-bot-server/ext.rb +1 -1
  13. data/lib/slack-ruby-bot-server/loggable.rb +25 -0
  14. data/lib/slack-ruby-bot-server/rspec.rb +0 -1
  15. data/lib/slack-ruby-bot-server/service.rb +7 -33
  16. data/lib/slack-ruby-bot-server/version.rb +1 -1
  17. data/public/index.html.erb +1 -1
  18. data/slack-ruby-bot-server.gemspec +2 -2
  19. data/tasks/db.rake +0 -36
  20. metadata +11 -51
  21. data/images/slackbotserver.gif +0 -0
  22. data/images/slackbutton.gif +0 -0
  23. data/lib/slack-ruby-bot-server/ext/activerecord/slack-ruby-bot/commands/base.rb +0 -18
  24. data/lib/slack-ruby-bot-server/ext/slack-ruby-bot.rb +0 -2
  25. data/lib/slack-ruby-bot-server/ext/slack-ruby-bot/client.rb +0 -12
  26. data/lib/slack-ruby-bot-server/server.rb +0 -31
  27. data/sample_apps/README.md +0 -11
  28. data/sample_apps/sample_app_activerecord/.rspec +0 -3
  29. data/sample_apps/sample_app_activerecord/.standalone_migrations +0 -3
  30. data/sample_apps/sample_app_activerecord/Gemfile +0 -24
  31. data/sample_apps/sample_app_activerecord/Procfile +0 -1
  32. data/sample_apps/sample_app_activerecord/README.md +0 -12
  33. data/sample_apps/sample_app_activerecord/Rakefile +0 -14
  34. data/sample_apps/sample_app_activerecord/commands.rb +0 -2
  35. data/sample_apps/sample_app_activerecord/commands/help.rb +0 -19
  36. data/sample_apps/sample_app_activerecord/commands/whoami.rb +0 -6
  37. data/sample_apps/sample_app_activerecord/config.ru +0 -22
  38. data/sample_apps/sample_app_activerecord/config/newrelic.yml +0 -217
  39. data/sample_apps/sample_app_activerecord/config/postgresql.yml +0 -17
  40. data/sample_apps/sample_app_activerecord/db/migrate/20170307164946_create_teams_table.rb +0 -12
  41. data/sample_apps/sample_app_activerecord/db/migrate/20190323181453_add_activated_fields.rb +0 -7
  42. data/sample_apps/sample_app_activerecord/db/schema.rb +0 -29
  43. data/sample_apps/sample_app_activerecord/spec/api/root_spec.rb +0 -16
  44. data/sample_apps/sample_app_activerecord/spec/commands/help_spec.rb +0 -14
  45. data/sample_apps/sample_app_activerecord/spec/commands/whoami_spec.rb +0 -14
  46. data/sample_apps/sample_app_activerecord/spec/spec_helper.rb +0 -19
  47. data/sample_apps/sample_app_mongoid/.rspec +0 -3
  48. data/sample_apps/sample_app_mongoid/Gemfile +0 -20
  49. data/sample_apps/sample_app_mongoid/Procfile +0 -1
  50. data/sample_apps/sample_app_mongoid/README.md +0 -14
  51. data/sample_apps/sample_app_mongoid/Rakefile +0 -10
  52. data/sample_apps/sample_app_mongoid/commands.rb +0 -2
  53. data/sample_apps/sample_app_mongoid/commands/help.rb +0 -19
  54. data/sample_apps/sample_app_mongoid/commands/whoami.rb +0 -6
  55. data/sample_apps/sample_app_mongoid/config.ru +0 -14
  56. data/sample_apps/sample_app_mongoid/config/mongoid.yml +0 -27
  57. data/sample_apps/sample_app_mongoid/config/newrelic.yml +0 -217
  58. data/sample_apps/sample_app_mongoid/spec/api/root_spec.rb +0 -16
  59. data/sample_apps/sample_app_mongoid/spec/commands/help_spec.rb +0 -14
  60. data/sample_apps/sample_app_mongoid/spec/commands/whoami_spec.rb +0 -14
  61. data/sample_apps/sample_app_mongoid/spec/spec_helper.rb +0 -27
@@ -1,17 +0,0 @@
1
- default: &default
2
- adapter: postgresql
3
- pool: 10
4
- timeout: 5000
5
- encoding: unicode
6
-
7
- development:
8
- <<: *default
9
- database: slack_ruby_bot_server_development
10
-
11
- test:
12
- <<: *default
13
- database: slack_ruby_bot_server_test
14
-
15
- production:
16
- <<: *default
17
- url: <%= ENV["DATABASE_URL"] %>
@@ -1,12 +0,0 @@
1
- class CreateTeamsTable < ActiveRecord::Migration[5.0]
2
- def change
3
- create_table :teams, force: true do |t|
4
- t.string :team_id
5
- t.string :name
6
- t.boolean :active, default: true
7
- t.string :domain
8
- t.string :token
9
- t.timestamps
10
- end
11
- end
12
- end
@@ -1,7 +0,0 @@
1
- class AddActivatedFields < ActiveRecord::Migration[5.0]
2
- def change
3
- add_column :teams, :bot_user_id, :string
4
- add_column :teams, :activated_user_id, :string
5
- add_column :teams, :activated_user_access_token, :string
6
- end
7
- end
@@ -1,29 +0,0 @@
1
- # This file is auto-generated from the current state of the database. Instead
2
- # of editing this file, please use the migrations feature of Active Record to
3
- # incrementally modify your database, and then regenerate this schema definition.
4
- #
5
- # Note that this schema.rb definition is the authoritative source for your
6
- # database schema. If you need to create the application database on another
7
- # system, you should be using db:schema:load, not running all the migrations
8
- # from scratch. The latter is a flawed and unsustainable approach (the more migrations
9
- # you'll amass, the slower it'll run and the greater likelihood for issues).
10
- #
11
- # It's strongly recommended that you check this file into your version control system.
12
-
13
- ActiveRecord::Schema.define(version: 20_190_323_181_453) do
14
- # These are extensions that must be enabled in order to support this database
15
- enable_extension 'plpgsql'
16
-
17
- create_table 'teams', force: :cascade do |t|
18
- t.string 'team_id'
19
- t.string 'name'
20
- t.boolean 'active', default: true
21
- t.string 'domain'
22
- t.string 'token'
23
- t.datetime 'created_at', null: false
24
- t.datetime 'updated_at', null: false
25
- t.string 'bot_user_id'
26
- t.string 'activated_user_id'
27
- t.string 'activated_user_access_token'
28
- end
29
- end
@@ -1,16 +0,0 @@
1
- require 'spec_helper'
2
-
3
- def app
4
- SlackRubyBotServer::Api::Middleware.instance
5
- end
6
-
7
- describe 'API' do
8
- include Rack::Test::Methods
9
-
10
- it 'root' do
11
- get '/api'
12
- expect(last_response.status).to eq 200
13
- links = JSON.parse(last_response.body)['_links']
14
- expect(links.keys.sort).to eq(%w[self status team teams].sort)
15
- end
16
- end
@@ -1,14 +0,0 @@
1
- require 'spec_helper'
2
- require 'commands/help'
3
-
4
- describe Help do
5
- let!(:team) { Fabricate(:team) }
6
- let(:app) { SlackRubyBotServer::Server.new(team: team) }
7
- let(:client) { app.send(:client) }
8
- let(:message_hook) { SlackRubyBot::Hooks::Message.new }
9
- it 'default' do
10
- expect(client).to receive(:say).with(channel: 'channel', text: [Help::HELP, SlackRubyBotServer::INFO].join("\n"))
11
- expect(client).to receive(:say).with(channel: 'channel')
12
- message_hook.call(client, Hashie::Mash.new(channel: 'channel', text: "#{SlackRubyBot.config.user} help"))
13
- end
14
- end
@@ -1,14 +0,0 @@
1
- require 'spec_helper'
2
- require 'commands/whoami'
3
-
4
- describe Whoami do
5
- let(:team) { Fabricate(:team) }
6
- let(:app) { SlackRubyBotServer::Server.new(team: team) }
7
- context 'whoami' do
8
- it 'returns username' do
9
- expect(message: "#{SlackRubyBot.config.user} whoami", channel: 'channel', user: 'user').to respond_with_slack_message(
10
- '<@user>'
11
- )
12
- end
13
- end
14
- end
@@ -1,19 +0,0 @@
1
- $LOAD_PATH.unshift File.expand_path('..', __dir__)
2
-
3
- ENV['RACK_ENV'] = 'test'
4
-
5
- require 'active_record'
6
- require 'database_cleaner'
7
- require 'slack-ruby-bot-server/rspec'
8
-
9
- db_config = YAML.safe_load(File.read(File.expand_path('../config/postgresql.yml', __dir__)), [], [], true)[ENV['RACK_ENV']]
10
- ActiveRecord::Tasks::DatabaseTasks.create(db_config)
11
- ActiveRecord::Base.establish_connection(db_config)
12
-
13
- RSpec.configure do |config|
14
- config.around :each do |example|
15
- DatabaseCleaner.cleaning do
16
- example.run
17
- end
18
- end
19
- end
@@ -1,3 +0,0 @@
1
- --color
2
- --format=documentation
3
-
@@ -1,20 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'mongoid'
4
- gem 'newrelic-slack-ruby-bot'
5
- gem 'slack-ruby-bot-server', path: '../../'
6
-
7
- gem 'kaminari-mongoid'
8
- gem 'mongoid-scroll'
9
- gem 'unicorn'
10
-
11
- group :test do
12
- gem 'database_cleaner'
13
- gem 'fabrication'
14
- gem 'faker'
15
- gem 'rack-test'
16
- gem 'rake'
17
- gem 'rspec'
18
- gem 'vcr'
19
- gem 'webmock'
20
- end
@@ -1 +0,0 @@
1
- web: bundle exec unicorn -p $PORT
@@ -1,14 +0,0 @@
1
- ### What's this?
2
-
3
- This is a sample slack-ruby-bot-server with ActiveRecord.
4
-
5
- ### Run
6
-
7
- ```
8
- bundle install
9
- rackup
10
- ```
11
-
12
- ### Demo
13
-
14
- This app is deployed from [github.com/slack-ruby/slack-ruby-bot-server-sample](https://github.com/slack-ruby/slack-ruby-bot-server-sample).
@@ -1,10 +0,0 @@
1
- require 'rubygems'
2
-
3
- require 'rspec/core'
4
- require 'rspec/core/rake_task'
5
-
6
- RSpec::Core::RakeTask.new(:spec) do |spec|
7
- spec.pattern = FileList['spec/**/*_spec.rb']
8
- end
9
-
10
- task default: [:spec]
@@ -1,2 +0,0 @@
1
- require_relative 'commands/help'
2
- require_relative 'commands/whoami'
@@ -1,19 +0,0 @@
1
- class Help < SlackRubyBot::Commands::Base
2
- HELP = <<-EOS.freeze
3
- ```
4
- I am your friendly slack-ruby-bot-server, here to help.
5
-
6
- General
7
- -------
8
-
9
- help - get this helpful message
10
- whoami - print your username
11
-
12
- ```
13
- EOS
14
- def self.call(client, data, _match)
15
- client.say(channel: data.channel, text: [HELP, SlackRubyBotServer::INFO].join("\n"))
16
- client.say(channel: data.channel)
17
- logger.info "HELP: #{client.owner}, user=#{data.user}"
18
- end
19
- end
@@ -1,6 +0,0 @@
1
- class Whoami < SlackRubyBot::Commands::Base
2
- def self.call(client, data, _match)
3
- client.say(channel: data.channel, text: "<@#{data.user}>")
4
- logger.info "UNAME: #{client.owner}, user=#{data.user}"
5
- end
6
- end
@@ -1,14 +0,0 @@
1
- ENV['RACK_ENV'] ||= 'development'
2
-
3
- Bundler.require :default
4
-
5
- require_relative 'commands'
6
-
7
- Mongoid.load!(File.expand_path('config/mongoid.yml', __dir__), ENV['RACK_ENV'])
8
-
9
- NewRelic::Agent.manual_start
10
-
11
- SlackRubyBotServer::App.instance.prepare!
12
- SlackRubyBotServer::Service.start!
13
-
14
- run SlackRubyBotServer::Api::Middleware.instance
@@ -1,27 +0,0 @@
1
- development:
2
- clients:
3
- default:
4
- database: bot-server_development
5
- hosts:
6
- - 127.0.0.1:27017
7
- options:
8
- raise_not_found_error: false
9
- use_utc: true
10
-
11
- test:
12
- clients:
13
- default:
14
- database: bot-server_test
15
- hosts:
16
- - 127.0.0.1:27017
17
- options:
18
- raise_not_found_error: false
19
- use_utc: true
20
-
21
- production:
22
- clients:
23
- default:
24
- uri: <%= ENV['MONGO_URL'] || ENV['MONGOHQ_URI'] || ENV['MONGOLAB_URI'] || ENV['MONGODB_URI'] %>
25
- options:
26
- raise_not_found_error: false
27
- use_utc: true
@@ -1,217 +0,0 @@
1
- # Here are the settings that are common to all environments
2
- common: &default_settings
3
- # ============================== LICENSE KEY ===============================
4
-
5
- # You must specify the license key associated with your New Relic
6
- # account. This key binds your Agent's data to your account in the
7
- # New Relic service.
8
- license_key: '<%= ENV["NEW_RELIC_LICENSE_KEY"] %>'
9
-
10
- # Application Name Set this to be the name of your application as
11
- # you'd like it show up in New Relic. The service will then auto-map
12
- # instances of your application into an "application" on your
13
- # dashboard page. If you want to map this instance into multiple
14
- # apps, like "AJAX Requests" and "All UI" then specify a semicolon
15
- # separated list of up to three distinct names, or a yaml list.
16
- app_name: <%= ENV["NEW_RELIC_APP_NAME"] || 'SlackRubyBotServer' %>
17
-
18
- # When "true", the agent collects performance data about your
19
- # application and reports this data to the New Relic service at
20
- # newrelic.com. This global switch is normally overridden for each
21
- # environment below. (formerly called 'enabled')
22
- monitor_mode: true
23
-
24
- # Developer mode should be off in every environment but
25
- # development as it has very high overhead in memory.
26
- developer_mode: false
27
-
28
- # The newrelic agent generates its own log file to keep its logging
29
- # information separate from that of your application. Specify its
30
- # log level here.
31
- log_level: info
32
-
33
- # Optionally set the path to the log file This is expanded from the
34
- # root directory (may be relative or absolute, e.g. 'log/' or
35
- # '/var/log/') The agent will attempt to create this directory if it
36
- # does not exist.
37
- # log_file_path: 'log'
38
-
39
- # Optionally set the name of the log file, defaults to 'newrelic_agent.log'
40
- # log_file_name: 'newrelic_agent.log'
41
-
42
- # The newrelic agent communicates with the service via http by
43
- # default. If you want to communicate via https to increase
44
- # security, then turn on SSL by setting this value to true. Note,
45
- # this will result in increased CPU overhead to perform the
46
- # encryption involved in SSL communication, but this work is done
47
- # asynchronously to the threads that process your application code,
48
- # so it should not impact response times.
49
- ssl: false
50
-
51
- # EXPERIMENTAL: enable verification of the SSL certificate sent by
52
- # the server. This setting has no effect unless SSL is enabled
53
- # above. This may block your application. Only enable it if the data
54
- # you send us needs end-to-end verified certificates.
55
- #
56
- # This means we cannot cache the DNS lookup, so each request to the
57
- # service will perform a lookup. It also means that we cannot
58
- # use a non-blocking lookup, so in a worst case, if you have DNS
59
- # problems, your app may block indefinitely.
60
- # verify_certificate: true
61
-
62
- # Set your application's Apdex threshold value with the 'apdex_t'
63
- # setting, in seconds. The apdex_t value determines the buckets used
64
- # to compute your overall Apdex score.
65
- # Requests that take less than apdex_t seconds to process will be
66
- # classified as Satisfying transactions; more than apdex_t seconds
67
- # as Tolerating transactions; and more than four times the apdex_t
68
- # value as Frustrating transactions.
69
- # For more about the Apdex standard, see
70
- # http://newrelic.com/docs/general/apdex
71
-
72
- apdex_t: 0.5
73
-
74
- #============================== Browser Monitoring ===============================
75
- # New Relic Real User Monitoring gives you insight into the performance real users are
76
- # experiencing with your website. This is accomplished by measuring the time it takes for
77
- # your users' browsers to download and render your web pages by injecting a small amount
78
- # of JavaScript code into the header and footer of each page.
79
- browser_monitoring:
80
- # By default the agent automatically injects the monitoring JavaScript
81
- # into web pages. Set this attribute to false to turn off this behavior.
82
- auto_instrument: true
83
-
84
- # Proxy settings for connecting to the service.
85
- #
86
- # If a proxy is used, the host setting is required. Other settings
87
- # are optional. Default port is 8080.
88
- #
89
- # proxy_host: hostname
90
- # proxy_port: 8080
91
- # proxy_user:
92
- # proxy_pass:
93
-
94
-
95
- # Tells transaction tracer and error collector (when enabled)
96
- # whether or not to capture HTTP params. When true, frameworks can
97
- # exclude HTTP parameters from being captured.
98
- # Rails: the RoR filter_parameter_logging excludes parameters
99
- # Java: create a config setting called "ignored_params" and set it to
100
- # a comma separated list of HTTP parameter names.
101
- # ex: ignored_params: credit_card, ssn, password
102
- capture_params: true
103
-
104
-
105
- # Transaction tracer captures deep information about slow
106
- # transactions and sends this to the service once a
107
- # minute. Included in the transaction is the exact call sequence of
108
- # the transactions including any SQL statements issued.
109
- transaction_tracer:
110
-
111
- # Transaction tracer is enabled by default. Set this to false to
112
- # turn it off. This feature is only available at the Professional
113
- # and above product levels.
114
- enabled: true
115
-
116
- # Threshold in seconds for when to collect a transaction
117
- # trace. When the response time of a controller action exceeds
118
- # this threshold, a transaction trace will be recorded and sent to
119
- # the service. Valid values are any float value, or (default)
120
- # "apdex_f", which will use the threshold for an dissatisfying
121
- # Apdex controller action - four times the Apdex T value.
122
- transaction_threshold: apdex_f
123
-
124
- # When transaction tracer is on, SQL statements can optionally be
125
- # recorded. The recorder has three modes, "off" which sends no
126
- # SQL, "raw" which sends the SQL statement in its original form,
127
- # and "obfuscated", which strips out numeric and string literals
128
- record_sql: obfuscated
129
-
130
- # Threshold in seconds for when to collect stack trace for a SQL
131
- # call. In other words, when SQL statements exceed this threshold,
132
- # then capture and send the current stack trace. This is
133
- # helpful for pinpointing where long SQL calls originate from
134
- stack_trace_threshold: 0.500
135
-
136
- # Determines whether the agent will capture query plans for slow
137
- # SQL queries. Only supported in mysql and postgres. Should be
138
- # set to false when using other adapters.
139
- # explain_enabled: true
140
-
141
- # Threshold for query execution time below which query plans will not
142
- # not be captured. Relevant only when `explain_enabled` is true.
143
- # explain_threshold: 0.5
144
-
145
- # Error collector captures information about uncaught exceptions and
146
- # sends them to the service for viewing
147
- error_collector:
148
-
149
- # Error collector is enabled by default. Set this to false to turn
150
- # it off. This feature is only available at the Professional and above
151
- # product levels
152
- enabled: true
153
-
154
- # Rails Only - tells error collector whether or not to capture a
155
- # source snippet around the place of the error when errors are View
156
- # related.
157
- capture_source: true
158
-
159
- # To stop specific errors from reporting to New Relic, set this property
160
- # to comma separated values. Default is to ignore routing errors
161
- # which are how 404's get triggered.
162
- #
163
- ignore_errors: ActionController::RoutingError
164
-
165
- # (Advanced) Uncomment this to ensure the cpu and memory samplers
166
- # won't run. Useful when you are using the agent to monitor an
167
- # external resource
168
- # disable_samplers: true
169
-
170
- # If you aren't interested in visibility in these areas, you can
171
- # disable the instrumentation to reduce overhead.
172
- #
173
- # disable_view_instrumentation: true
174
- # disable_activerecord_instrumentation: true
175
- # disable_memcache_instrumentation: true
176
- # disable_dj: true
177
-
178
- # If you're interested in capturing memcache keys as though they
179
- # were SQL uncomment this flag. Note that this does increase
180
- # overhead slightly on every memcached call, and can have security
181
- # implications if your memcached keys are sensitive
182
- # capture_memcache_keys: true
183
-
184
- # Certain types of instrumentation such as GC stats will not work if
185
- # you are running multi-threaded. Please let us know.
186
- # multi_threaded = false
187
-
188
- # Application Environments
189
- # ------------------------------------------
190
-
191
- development:
192
- <<: *default_settings
193
- # Turn off communication to New Relic service in development mode (also
194
- # 'enabled').
195
- # NOTE: for initial evaluation purposes, you may want to temporarily
196
- # turn the agent on in development mode.
197
- monitor_mode: false
198
-
199
- # Rails Only - when running in Developer Mode, the New Relic Agent will
200
- # present performance information on the last 100 transactions you have
201
- # executed since starting the mongrel.
202
- # NOTE: There is substantial overhead when running in developer mode.
203
- # Do not use for production or load testing.
204
- developer_mode: true
205
-
206
- # Enable textmate links
207
- # textmate: true
208
-
209
- test:
210
- <<: *default_settings
211
- # It almost never makes sense to turn on the agent when running
212
- # unit, functional or integration tests or the like.
213
- monitor_mode: false
214
-
215
- production:
216
- <<: *default_settings
217
- monitor_mode: true