-
Notifications
You must be signed in to change notification settings - Fork 471
Ruby Version 5.x Upgrade Guide
This is an upgrade guide for moving from 4.x to 5.x versions of the twilio-ruby
helper library.
# Old
call = @client.account.calls.get('CA123xxx')
# New
call = @client.api.v2010.account.calls('CA123xxx').fetch
## OR
call = @client.account.calls('CA123xxx').fetch
The new library makes Twilio API subdomains (Lookups, Conversations, Monitor, etc.) first-class citizens. You can now also pin your interactions to the Twilio API to specific versions of that API (so here, .v2010.
ensures we always talk to the 2010-04-01 version of the API). This allows you to migrate portions of your code to future versions independently without having to do a full upgrade when you update the library.
You'll also notice you have to call fetch
at the end to get the actual instance of a Call
. This is because .calls('CAxxx')
returns a "Context", which we can then fetch
to retrieve an "Instance", with all of it's properties attached. This allows for better network efficiency and makes it more clear when the library is actually performing HTTP interactions.
> workspace = @client.taskrouter.workspaces('WSxxx')
#=> <WorkspaceContext ...>
> workspace.fetch
#=> <WorkspaceInstance status='active'...>
There are now 2 ways to get a list of resources: list
and stream
.
-
list
does exactly what it used to: it returns anArray
that contains the Instances of resources.
> @client.api.messages.list
#=> [#<MessageInstance ..>, #<MessageInstance ..>, ...]
-
stream
returns anEnumerable
that can be passed to a block, it efficiently pages the list of resources for you and will passlimit
amount of instances to the block (or every resource in the entire list, if nolimit
is set).
> @client.api.messages.stream(limit: 5) {|m| puts m.sid}
MS111xxx
MS222xxx
MS333xxx
MS444xxx
MS555xxx
The library now automatically handles paging for you! In both list
and stream
, you can specify the amount of instances you want to grab (limit
), the maximum size you want each page fetch to be (page_size
), and the maximum amount of pages to fetch (page_limit
). The library will then handle the rest for you (as efficiently as possible)!
@client.api.incoming_phone_numbers.stream(limit: 3000, page_size: 100) do |number|
puts number.phone_number
end
> @client.conversations.completed.list(page_size: 100, page_limit: 10).size
#=> 1000
You can now plug your own HTTP client into the Twilio::REST client! Just make a wrapper that conforms to