eventbrite-sdk-ruby
eventbrite-sdk-ruby copied to clipboard
`token` is `nil` in threaded envrionment like Sidekiq
Using EventbriteSDK in a threaded environment does not work because EventbriteSDK.token is nil inside child threads.
This is because the token is stored in a thread local var which is local to the parent thread.
Therefore we need to set the token before every use of EventbriteSDK in any sidekiq jobs instead of setting it once in an initializer. I assume this would also be a problem in threaded servers like Puma.
Example:
test.rb
#!/usr/bin/env ruby
require 'bundler/inline'
gemfile true do
source 'https://rubygems.org'
gem 'eventbrite_sdk'
end
EventbriteSDK.token = SecureRandom.uuid
puts(EventbriteSDK.token.inspect)
10.times.map { Thread.new { puts(EventbriteSDK.token.inspect) } }.each(&:join)
The output is something like:
ruby test.rb
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...
<SNIP>
"c2f45df8-fe6c-4a60-b5ee-ab38c1716363"
nil
nil
nil
nil
nil
nil
nil
nil
nil
nil
The solution would be to use a regular class variable instead. I'm happy to prepare a PR, please let me know.