Skip to content

Latest commit

 

History

History
180 lines (117 loc) · 5.7 KB

UPGRADING.md

File metadata and controls

180 lines (117 loc) · 5.7 KB

Upgrading Slack-Ruby-Bot-Server

Upgrading to >= 0.11.0

Removed Legacy Migrations

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.

Unicorn Dependency

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.

Upgrading to >= 0.10.0

New Team Fields

The following fields have been added to Team.

  • bot_user_id: the bot user_id during installation
  • activated_user_id: the installing Slack user user_id
  • activated_user_access_token: the installing Slack user access_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
end

See #96 for more information.

Upgrading to >= 0.9.0

Removed Ping Worker

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.

Upgrading to >= 0.8.0

Different Asynchronous I/O Library

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.

Upgrading to >= 0.7.0

New Ping Worker

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
  }
end

If you are currently using a custom ping worker as suggested in slack-ruby-client#208, delete it.

See #74 for more information.

Upgrading to >= 0.6.0

Mongoid and ActiveRecord support

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.

Mongoid
gem 'mongoid'
gem 'slack-ruby-bot-server'
ActiveRecord (with PostgreSQL)
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.

Upgrading to >= 0.4.0

Add giphy to your Gemfile for GIF support

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.

Changes in Callbacks

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
end

The reset and resetting callbacks have also been removed.

Upgrading to >= 0.3.1

Remove Monkey-Patching of SlackRubyBotServer::App

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
end

Make sure to create an .instance of the child class.

MyApp.instance.prepare!

See #22 for additional information.

Upgrading to >= 0.3.0

Remove Monkey-Patching of SlackRubyBotServer::Server

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
end

See #18 for more information.