As of 0.15.0, activesupport
is no longer required. Add gem 'activesupport'
to your Gemfile if you required ActiveSupport via this library.
See #325 for more information.
If you are using async-websocket, lock down its version to 0.8.0 as newer versions are currently incompatible.
gem 'async-websocket', '~> 0.8.0'
See #282 for more information.
The RealTime client now supports async-websocket, which is actively maintained and is now the recommended library.
See #219 for implementation details.
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.
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
end
See #145 for more information.
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.
Before:
Slack::RealTime::Client.config do |config|
config.start_options = { no_unreads: true }
end
After:
Slack::RealTime::Client.config do |config|
config.start_options[:no_unreads] = true # keeps config.start_options[:request] intact
end
See #136 for more information.
API responses in both Web and RealTime clients are now instances of Slack::Messages::Message, which provides method access to properties.
Before:
puts "Welcome '#{client.self['name']}' to the '#{client.team['name']}' team."
After:
puts "Welcome #{client.self.name} to the #{client.team.name} team."
See #56 for more information.
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 client.team
object is now a Slack::RealTime::Models::Team
, which is a child of Hashie::Mash
, so no code changes should be required.
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.
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.
gem 'faye-websocket'
gem 'celluloid-io'
When in doubt, use faye-websocket
.
See #5 for more information.