Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
119 lines (69 sloc) 4.44 KB

Upgrading Slack-Ruby-Client

Upgrading to >= 0.13.0

Recommended Async Library

The RealTime client now supports async-websocket, which is actively maintained and is now the recommended library.

See #219 for implementation details.

Async Library Threading and Reactor Changes

The RealTime celluloid-io implementation now uses a Thread per client. Previous versions used an Actor.

The faye-websocket implementation with EventMachine will attempt to shutdown EventMachine via EventMachine.stop upon shutdown if a reactor wasn't already running.

See #224 for more information.

Upgrading to >= 0.9.0

Changes in How the RTM Client Connects

The RealTime client now automatically chooses either rtm.start or rtm.connect to open a connection. The rtm.connect method is a newer, preferred method, which serves connection purposes and returns some basic team info. The rtm.start method additionally returns a lot of data about the team, its channels, and members, and is required to use the full Slack::RealTime::Stores::Store storage class.

Prior versions always used rtm.start, to restore this behavior, configure start_method.

Slack::RealTime::Client.config do |config|
  config.start_method = :rtm_start

See #145 for more information.

Upgrading to >= 0.8.0

The default timeout for rtm.start has been increased from 60 to 180 seconds via Slack::RealTime::Client.config.start_options[:request][:timeout]. If you're explicitly setting start_options in your application, preserve the value by merging settings instead of replacing the entire start_options value.


Slack::RealTime::Client.config do |config|
  config.start_options = { no_unreads: true }


Slack::RealTime::Client.config do |config|
  config.start_options[:no_unreads] = true # keeps config.start_options[:request] intact

See #136 for more information.

Upgrading to >= 0.6.0

Changes to API Response Data

API responses in both Web and RealTime clients are now instances of Slack::Messages::Message, which provides method access to properties.


puts "Welcome '#{client.self['name']}' to the '#{['name']}' team."


puts "Welcome #{} to the #{} team."

See #56 for more information.

Changes to RealTime Local Store

Upon a successful rtm.start the RealTime client keeps a local cache of objects, including self or users. It will now also track changes to these objects. The following changes have been made to the data structures.


The client.self object is now a Slack::RealTime::Models::User, which is a child of Hashie::Mash, so no code changes should be required.

The object is now a Slack::RealTime::Models::Team, which is a child of Hashie::Mash, so no code changes should be required.

client .users, .channels, .groups, .ims

The client.users, .channels, .groups and .ims collections have been changed from Array to Hash, with object ID as key. Replace any code iterating over the array, eg. client.users.values.each or client.channels.each_pair { |id, channel| ... }.

See #55 for more information.

Upgrading to >= 0.5.0

Changes to Real Time Concurrency

Since 0.5.0 Slack::RealTime::Client supports Celluloid and no longer defaults to Faye::WebSocket with Eventmachine. It will auto-detect one or the other depending on the gems in your Gemfile, which means you may need to add one or the other to your Gemfile.

Faye::WebSocket with Eventmachine
gem 'faye-websocket'
gem 'celluloid-io'

When in doubt, use faye-websocket.

See #5 for more information.