The mongoid cursor helper now requires mongoid-scroll 2.x, the second argument to scroll has changed. See mongoid-scroll UPGRADING for more information.
cursor_pagination is abandoned and no longer maintained. It is replaced with pagy_cursor.
If you're using ActiveRecord, replace cursor_pagination with pagy_cursor in the Gemfile.
gem 'pagy_cursor'The following fields have been added to Team.
oauth_scope: Slack OAuth scopeoauth_version: Slack OAuth version used
No action is required for Mongoid.
If you're using ActiveRecord, create a migration to add these fields.
class AddOauthFields < ActiveRecord::Migration[5.0]
def change
add_column :teams, :oauth_scope, :string
add_column :teams, :oauth_version, :string, default: 'v1', null: false
end
endSee MIGRATING for help with migrating Legacy Slack Apps to Granular Scopes.
New slack apps may no longer access RTM. Classic Slack apps can no longer be submitted to the app directory as of December 4th, 2020. In preparation for these changes slack-ruby-bot-server no longer includes RTM components by default. These have been extracted to a new gem slack-ruby-bot-server-rtm.
To upgrade an existing classic Slack app that uses slack-ruby-bot-server do the following.
- Add
slack-ruby-bot-server-rtmas an additional dependency. - Replace any reference to
SlackRubyBotServer::ServertoSlackRubyBotServer::RealTime::Server. - Replace any
require 'slack-ruby-bot-server/rspec'withrequire 'slack-ruby-bot-server-rtm/rspec'. - Use Slack OAuth 1.0 and configure scopes.
SlackRubyBotServer.configure do |config| config.oauth_version = :v1 config.oauth_scope = ['bot'] end
Existing RTM Slack bots will continue working and be listed in the Slack App Directory. On December 4th, 2020 Slack will no longer accept resubmissions from apps that are not using granular permissions. On November 18, 2021 Slack will start delisting apps that have not migrated to use granular permissions. Use slack-ruby-bot-server-events to create a Slack bot with granular permissions. See migration for more details.
Several legacy migrations have been removed, including the code to automatically create a team from a legacy SLACK_API_TOKEN, setting Team#active, name and team_id.
See #101 for more information.
The dependency on unicorn has been removed from gemspec. Use unicorn or puma or another application server as you see fit by explicitly adding a dependency in your Gemfile.
See #98 for more information.
The following fields have been added to Team.
bot_user_id: the botuser_idduring installationactivated_user_id: the installing Slack useruser_idactivated_user_access_token: the installing Slack useraccess_token
No action is required for Mongoid.
If you're using ActiveRecord, create a migration similar to sample_apps/sample_app_activerecord/db/migrate/20190323181453_add_activated_fields.rb to add these fields.
class AddActivatedFields < ActiveRecord::Migration[5.0]
def change
add_column :teams, :bot_user_id, :string
add_column :teams, :activated_user_id, :string
add_column :teams, :activated_user_access_token, :string
end
endSee #96 for more information.
The ping worker that was added in 0.7.0 has been removed in favor of a lower level implementation in slack-ruby-client. Remove any references to ping options.
See slack-ruby-client#226 and #93 for more information.
The library now uses async-websocket instead of celluloid-io. If your application is built on Celluloid you may need to make changes and use Async::Reactor.run and the likes.
See #75 for more information.
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.
SlackRubyBotServer.configure do |config|
config.ping = {
enabled: false
}
endIf you are currently using a custom ping worker as suggested in slack-ruby-client#208, delete it.
See #74 for more information.
Version 0.6.0 supports both Mongoid and ActiveRecord. The mongoid gem is no longer a dependency, so you must manually add the gems in your Gemfile.
gem 'mongoid'
gem 'slack-ruby-bot-server'
gem 'pg'
gem 'activerecord', require: 'active_record'
gem 'slack-ruby-bot-server'
The order matters, and the driver is required first, otherwise you will get a One of "mongoid" or "activerecord" is required. error.
See #48 for more information.
The dependency on the giphy gem was dropped in slack-ruby-bot 0.9.0 and GIFs don't appear by default. If you want GIF support, add gem 'giphy' to your Gemfile.
See slack-ruby-bot#89 for more information.
The SlackRubyBotServer::Service class used to track services in a Hash. This is no longer the case. Callbacks no longer receive a server object for the team, but the latter is assigned as team.server.
instance = SlackRubyBotServer::Service.instance
instance.on :started do |team, error|
# a new team has been registered
# team.server is available
endThe reset and resetting callbacks have also been removed.
You no longer need to monkey-patch the app class. You can subclass it and invoke additional prepare! methods.
class MyApp < SlackRubyBotServer::App
def prepare!
super
deactivate_sleepy_teams!
end
private
def deactivate_sleepy_teams!
Team.active.each do |team|
next unless team.sleepy?
team.deactivate!
end
end
endMake sure to create an .instance of the child class.
MyApp.instance.prepare!See #22 for additional information.
In the past adding events required monkey-patching of the server class. You can now override the server class to handle additional events, and configure the service to use yours.
class MyServerClass < SlackRubyBotServer::Server
on :hello do |client, data|
# connected to Slack
end
on :channel_joined do |client, data|
# the bot joined a channel in data.channel['id']
end
end
SlackRubyBotServer.configure do |config|
config.server_class = MyServerClass
endSee #18 for more information.