Giter VIP home page Giter VIP logo

patreon-ruby's Issues

Namespace conflict with "User" model.

I catch an error that I can't solve. Why Your api call does not works after active record call?

require 'patreon'
require File.expand_path('../../config/environment',  __FILE__)
@api_client = Patreon::API.new("key")


def check_and_create(message, bot)
  if !User.exists?(telegram_id: 1)
    User.create(:telegram_id => 1, :first_name => "message.from.first_name")
    return User.last
  else
    return User.where(telegram_id: 1).first
  end
end

#block works
patron_response = @api_client.fetch_campaign_and_patrons()
p patron_response.data[0].pledges[2].patron.email
p patron_response.data[0].pledges[2].reward.id

user = check_and_create(nil, nil)

#block does not work
patron_response = @api_client.fetch_campaign_and_patrons()
p patron_response.data[0].pledges[2].patron.email
p patron_response.data[0].pledges[2].reward.id

The error looks like:

/Library/Ruby/Gems/2.3.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:152:in `set_key': undefined method `campaign=' for nil:NilClass (NoMethodError)
	from /Library/Ruby/Gems/2.3.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:94:in `block (2 levels) in build'
	from /Library/Ruby/Gems/2.3.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:80:in `each'
	from /Library/Ruby/Gems/2.3.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:80:in `block in build'
	from /Library/Ruby/Gems/2.3.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:76:in `each'
	from /Library/Ruby/Gems/2.3.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:76:in `build'
	from /Library/Ruby/Gems/2.3.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:20:in `parse'
	from /Library/Ruby/Gems/2.3.0/gems/patreon-0.5.0/lib/patreon/api.rb:53:in `parse_json'
	from /Library/Ruby/Gems/2.3.0/gems/patreon-0.5.0/lib/patreon/api.rb:33:in `get_parse_json'
	from /Library/Ruby/Gems/2.3.0/gems/patreon-0.5.0/lib/patreon/api.rb:12:in `fetch_campaign'
	from /Library/Ruby/Gems/2.3.0/gems/patreon-0.5.0/lib/patreon/api.rb:18:in `fetch_campaign_and_patrons'
	from bin/untitled.rb:21:in `<main>'

NoMethodError on fetch_user() step

I am using this in a Rails application. I successfully handle the OAuth redirect and retrieve an access token. If I use this access token in a CURL request I get the correct response; however when I call

api_client = Patreon::API.new(access_token)
user_response = api_client.fetch_user()

I get the error: #<NoMethodError: undefined method `first_name=' for #User:0x007fc877d2cbd8

15:18:45 web.1 | NoMethodError - undefined methodfirst_name=' for #User:0x007fc87dad9240
15:18:45 web.1 | Did you mean? first_name:
15:18:45 web.1 | activemodel (3.2.22.5) lib/active_model/attribute_methods.rb:407:in method_missing' 15:18:45 web.1 | activerecord (3.2.22.5) lib/active_record/attribute_methods.rb:149:in method_missing'
15:18:45 web.1 | json-api-vanilla (1.0.1) lib/json-api-vanilla/parser.rb:152:in set_key' 15:18:45 web.1 | json-api-vanilla (1.0.1) lib/json-api-vanilla/parser.rb:66:in block (2 levels) in build'
15:18:45 web.1 | json-api-vanilla (1.0.1) lib/json-api-vanilla/parser.rb:65:in block in build' 15:18:45 web.1 | json-api-vanilla (1.0.1) lib/json-api-vanilla/parser.rb:59:in build'
15:18:45 web.1 | json-api-vanilla (1.0.1) lib/json-api-vanilla/parser.rb:20:in parse' 15:18:45 web.1 | patreon (0.5.0) lib/patreon/api.rb:53:in parse_json'
15:18:45 web.1 | patreon (0.5.0) lib/patreon/api.rb:33:in get_parse_json' 15:18:45 web.1 | patreon (0.5.0) lib/patreon/api.rb:8:in fetch_user'
15:18:45 web.1 | app/controllers/admin/integrations_controller.rb:24:in patreon_oauth' 15:18:45 web.1 | actionpack (3.2.22.5) lib/action_controller/metal/implicit_render.rb:4:in send_action'
15:18:45 web.1 | actionpack (3.2.22.5) lib/abstract_controller/base.rb:167:in process_action' 15:18:45 web.1 | actionpack (3.2.22.5) lib/action_controller/metal/rendering.rb:10:in process_action'
15:18:45 web.1 | actionpack (3.2.22.5) lib/abstract_controller/callbacks.rb:18:in block in process_action' 15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/callbacks.rb:536:in block in _run__3394448666547474360__process_action__4531161500479660945__callbacks'
15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/callbacks.rb:215:in block in _conditional_callback_around_48813' 15:18:45 web.1 | react-rails (2.4.4) lib/react/rails/controller_lifecycle.rb:31:in use_react_component_helper'
15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/callbacks.rb:214:in _conditional_callback_around_48813' 15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/callbacks.rb:458:in _run__3394448666547474360__process_action__4531161500479660945__callbacks'
15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/callbacks.rb:405:in __run_callback' 15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/callbacks.rb:385:in _run_process_action_callbacks'
15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/callbacks.rb:81:in run_callbacks' 15:18:45 web.1 | actionpack (3.2.22.5) lib/abstract_controller/callbacks.rb:17:in process_action'
15:18:45 web.1 | actionpack (3.2.22.5) lib/action_controller/metal/rescue.rb:29:in process_action' 15:18:45 web.1 | actionpack (3.2.22.5) lib/action_controller/metal/instrumentation.rb:30:in block in process_action'
15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/notifications.rb:123:in block in instrument' 15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/notifications/instrumenter.rb:20:in instrument'
15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/notifications.rb:123:in instrument' 15:18:45 web.1 | actionpack (3.2.22.5) lib/action_controller/metal/instrumentation.rb:29:in process_action'
15:18:45 web.1 | actionpack (3.2.22.5) lib/action_controller/metal/params_wrapper.rb:207:in process_action' 15:18:45 web.1 | activerecord (3.2.22.5) lib/active_record/railties/controller_runtime.rb:18:in process_action'
15:18:45 web.1 | actionpack (3.2.22.5) lib/abstract_controller/base.rb:121:in process' 15:18:45 web.1 | actionpack (3.2.22.5) lib/abstract_controller/rendering.rb:46:in process'
15:18:45 web.1 | actionpack (3.2.22.5) lib/action_controller/metal.rb:203:in dispatch' 15:18:45 web.1 | actionpack (3.2.22.5) lib/action_controller/metal/rack_delegation.rb:14:in dispatch'
15:18:45 web.1 | actionpack (3.2.22.5) lib/action_controller/metal.rb:246:in block in action' 15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/routing/route_set.rb:73:in dispatch'
15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/routing/route_set.rb:36:in call' 15:18:45 web.1 | journey (1.0.4) lib/journey/router.rb:68:in block in call'
15:18:45 web.1 | journey (1.0.4) lib/journey/router.rb:56:in call' 15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/routing/route_set.rb:608:in call'
15:18:45 web.1 | meta_request (0.4.3) lib/meta_request/middlewares/app_request_handler.rb:13:in call' 15:18:45 web.1 | meta_request (0.4.3) lib/meta_request/middlewares/meta_request_handler.rb:13:in call'
15:18:45 web.1 | bullet (5.4.3) lib/bullet/rack.rb:12:in call' 15:18:45 web.1 | () Users/wienerk/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/route_downcaser-e854b758a337/lib/route_downcaser/downcase_route_middleware.rb:21:in call'
15:18:45 web.1 | lib/middleware/cookie_tracking.rb:18:in call' 15:18:45 web.1 | lib/middleware/host_based_tld_length.rb:17:in call'
15:18:45 web.1 | lib/middleware/maintenance_sites.rb:14:in call' 15:18:45 web.1 | rack-iframe (0.0.3) lib/rack/iframe.rb:28:in call'
15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/middleware/best_standards_support.rb:17:in call' 15:18:45 web.1 | rack (1.4.7) lib/rack/etag.rb:23:in call'
15:18:45 web.1 | rack (1.4.7) lib/rack/conditionalget.rb:25:in call' 15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/middleware/head.rb:14:in call'
15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/middleware/params_parser.rb:21:in call' 15:18:45 web.1 | warden (1.2.7) lib/warden/manager.rb:36:in block in call'
15:18:45 web.1 | warden (1.2.7) lib/warden/manager.rb:35:in call' 15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/middleware/flash.rb:242:in call'
15:18:45 web.1 | rack (1.4.7) lib/rack/session/abstract/id.rb:210:in context' 15:18:45 web.1 | rack (1.4.7) lib/rack/session/abstract/id.rb:205:in call'
15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/middleware/cookies.rb:341:in call' 15:18:45 web.1 | activerecord (3.2.22.5) lib/active_record/query_cache.rb:64:in call'
15:18:45 web.1 | activerecord (3.2.22.5) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in call' 15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/middleware/callbacks.rb:28:in block in call'
15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/callbacks.rb:405:in _run__3756127200370713390__call__3957744422867323536__callbacks' 15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/callbacks.rb:405:in __run_callback'
15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/callbacks.rb:385:in _run_call_callbacks' 15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/callbacks.rb:81:in run_callbacks'
15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/middleware/callbacks.rb:27:in call' 15:18:45 web.1 | rails-dev-tweaks (1.2.0) lib/rails_dev_tweaks/granular_autoload/middleware.rb:36:in call'
15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/middleware/remote_ip.rb:31:in call' 15:18:45 web.1 | better_errors (2.1.1) lib/better_errors/middleware.rb:84:in protected_app_call'
15:18:45 web.1 | better_errors (2.1.1) lib/better_errors/middleware.rb:79:in better_errors_call' 15:18:45 web.1 | better_errors (2.1.1) lib/better_errors/middleware.rb:57:in call'
15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/middleware/debug_exceptions.rb:16:in call' 15:18:45 web.1 | rack-contrib (1.4.0) lib/rack/contrib/response_headers.rb:17:in call'
15:18:45 web.1 | meta_request (0.4.3) lib/meta_request/middlewares/headers.rb:16:in call' 15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/middleware/show_exceptions.rb:56:in call'
15:18:45 web.1 | railties (3.2.22.5) lib/rails/rack/logger.rb:32:in call_app' 15:18:45 web.1 | railties (3.2.22.5) lib/rails/rack/logger.rb:16:in block in call'
15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/tagged_logging.rb:22:in tagged' 15:18:45 web.1 | railties (3.2.22.5) lib/rails/rack/logger.rb:16:in call'
15:18:45 web.1 | quiet_assets (1.1.0) lib/quiet_assets.rb:27:in call_with_quiet_assets' 15:18:45 web.1 | request_store (1.3.2) lib/request_store/middleware.rb:9:in call'
15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/middleware/request_id.rb:22:in call' 15:18:45 web.1 | rack (1.4.7) lib/rack/methodoverride.rb:21:in call'
15:18:45 web.1 | rack (1.4.7) lib/rack/runtime.rb:17:in call' 15:18:45 web.1 | activesupport (3.2.22.5) lib/active_support/cache/strategy/local_cache.rb:72:in call'
15:18:45 web.1 | actionpack (3.2.22.5) lib/action_dispatch/middleware/static.rb:83:in call' 15:18:45 web.1 | () Users/wienerk/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/font_assets-fd695666a1b9/lib/font_assets/middleware.rb:21:in call'
15:18:45 web.1 | rack-cors (0.4.1) lib/rack/cors.rb:81:in call' 15:18:45 web.1 | honeybadger (3.1.2) lib/honeybadger/rack/error_notifier.rb:34:in block in call'
15:18:45 web.1 | honeybadger (3.1.2) lib/honeybadger/agent.rb:321:in with_rack_env' 15:18:45 web.1 | honeybadger (3.1.2) lib/honeybadger/rack/error_notifier.rb:31:in call'
15:18:45 web.1 | honeybadger (3.1.2) lib/honeybadger/rack/user_feedback.rb:31:in call' 15:18:45 web.1 | honeybadger (3.1.2) lib/honeybadger/rack/user_informer.rb:21:in call'
15:18:45 web.1 | railties (3.2.22.5) lib/rails/engine.rb:484:in call' 15:18:45 web.1 | railties (3.2.22.5) lib/rails/application.rb:231:in call'
15:18:45 web.1 | railties (3.2.22.5) lib/rails/railtie/configurable.rb:30:in method_missing' 15:18:45 web.1 | passenger (5.0.30) src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb:97:in process_request'
15:18:45 web.1 | passenger (5.0.30) src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb:152:in accept_and_process_next_request' 15:18:45 web.1 | passenger (5.0.30) src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb:113:in main_loop'
15:18:45 web.1 | passenger (5.0.30) src/ruby_supportlib/phusion_passenger/request_handler.rb:416:in block (3 levels) in start_threads' 15:18:45 web.1 | passenger (5.0.30) src/ruby_supportlib/phusion_passenger/utils.rb:113:in block in create_thread_and_abort_on_exception'
`

NoMethodError (undefined method `campaign=' for nil:NilClass)

Hi,

I am trying to fetch patrons but I am getting errors:

api_client = Patreon::API.new(ENV.fetch('PATREON_ACCESS_TOKEN'))
=> #<Patreon::API:0x0000558727862be0 @access_token="xxx">
irb(main):002:0> campaign_response = api_client.fetch_campaign
opening connection to www.patreon.com:443...
opened
starting SSL for www.patreon.com:443...
SSL established
<- "GET /api/oauth2/api/current_user/campaigns HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: Patreon-Ruby, version 0.5.0, platform x86_64-pc-linux-gnu\r\nAuthorization: Bearer xxx\r\nConnection: close\r\nHost: www.patreon.com\r\n\r\n"
-> "HTTP/1.1 200 OK\r\n"
-> "Date: xxx\r\n"
-> "Content-Type: application/vnd.api+json\r\n"
-> "Transfer-Encoding: chunked\r\n"
-> "Connection: close\r\n"
-> "Set-Cookie: __cfduid=xxx; expires=Wed, XXX GMT; path=/; domain=.patreon.com; HttpOnly; Secure\r\n"
-> "Vary: Accept-Encoding\r\n"
-> "Cache-control: private\r\n"
-> "Set-Cookie: patreon_device_id=xxx; Domain=patreon.com; Expires=Mon, xxxx GMT; Max-Age=630720000; Path=/\r\n"
-> "X-Patreon-UUID: xxx\r\n"
-> "Content-Encoding: gzip\r\n"
-> "Strict-Transport-Security: max-age=2592000\r\n"
-> "X-Content-Type-Options: nosniff\r\n"
-> "Expect-CT: max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"\r\n"
-> "Server: cloudflare\r\n"
-> "CF-RAY:xxx\r\n"
-> "\r\n"
-> "ddf\r\n"
reading 3551 bytes...
-> "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x03\xE5Z\ts\xD4F\x16\xFE+\x9D\xA9\xDDMR\xEB\x99\xD1}\xCC\x12X\xC0\x06\x9B`\xB0\x19\x83qBj\xAA%\xB5F\x8Du\xA1ny\x18R\xFC\xF7}\xAF%\xCDm0&lm\xB2U>f\xFA|\xFD\xDE\xF7\xBD\xA3\xA5\xDF{\x11\x95\xB47\xFA\xF5\xF7\x1E\x95\xB2\xE2A-\x99\xE8\x8D\xE0\xDB\x15\xB4W\x932)d1\xA9\xAB\xB47\xEA%R\x96b4\x1C\x86\xBA6(\xA9\xACX\x91\xD7\x82Ua\x91K\x96\xCBAXdCs\xC8\xE6O\xCC\xA3\xB7\xC5\xFCx\xFF\x81?lG\xF53\x16q:,\x87!\xCDJ\xCA\xA7\xF9\xD005\xCD\xD0\x87\xA6a9\x86n\a~l\xC4\x16\xA3A\x10F\xBEah\x1Au\r\xDF\x8F\x02:\xD4\xEF\xC9\xE2\x92\xE5}\xC93\xF6\x93\xA1[\xB6\xAF;\x9E\xA6\xFD\xA3iM\xA8H~:9\x9F\xF8G\xE3\xD7\xFB\xE7'G\xE3jr\xFF\t\xB7\xDE_8\xE7\xD1\xFE\x93\x93W\x87V\xFC\xE4\xDD\xAB\xD7\xB3\xEC\xF2\xF4Y\xC9\xAD\x8B\xBF\x9B\xFB\xBD\xBD^X\\\xB1\xDB\x1F\xEC\xFD\xF3\xB3\xA3Y|\nK\xC1\xCFg\x0F\xE8\xF8\xA6\xC9B\xDF\xB7\x9D\xC8\xB4<\xC7\xF6\x9C\x98\x99N\xA0{N\xE4\x84\x81\xB9q@\xDD\xB65\xDD\xF36\x0ExJ\x1F\xF6\x8F\xCB\x0F\xDE\x87\xC7\xC7\xCF\x8B\xF9x\x16\x96\xC9\xE1\x91\x17\xD7/O_\x94\xF7_\xCF\xE9\xF4\"\b^Di>>x\xD9\x1E\xB0bT\xB2hB%\x9C\xCD\xD0t\xBB\xAFk}C?\xD3\xED\x91m\x8F\f\xFD\x9F\x9A6\xD2\xB4n /\xF2IX\xD49\f6\xEC\x95\xB6\x9Cf\f\xE6\v8\xA0\f\x93tNh\x1E\x91B&\xAC\"E\xC9r\"\x8A\xBA\n\x19\x11\xB2\x8EcX+\xE2\",\xAAh\x02zC\xF5\xF2\b\xE6Z\xB6i[pl\xCB0\\\xD7s\\\xC7h\x06\x96)\x9DOPu\xB0\xCD\xB4\xA0)\x00.\x86\xBFl\xAF\xC7h\x95\xF3|*&W\\\xF0\x80\xA7\\\xCEa\x9D\xB2\x0ER\x1E\xC2\\\x9E\xD1)\x9B\x88\x8C\xA6\xE9\x17\x9A\xAE\x00\xD3\x19\xCF\xF6\xEF\x8B\xA3<\xE4\xCF\xDF^h\xC7\x87\xDA\x7F\xCB\x80N8NN\xAF\x1C\xB3o\x9D\xBD\x7F5}\xF0\xF2\xC9\xD8\b\x0F\r\xD7\xFB\xC5\xBEJg\xE1\xC5\x81|\xE4\xBF\xD3\xC7\xC6\x81\xEE\xCE"
-> "\x1A\x036\xC7\xFCKb\x93\x8BI\x98\xD0\n\x8FW\xC6`\x7F\xB90\xFD\xA2'\x9A\xF0L\xC9,Y:_\xED\xCE`x\x82M\xB2\xAA\x9B\x96\\\xC4\xB3\xD5\x11eZW4]\xB4d\x94\xE7\x80\xA4\x88\x15\x13\x96\x05\f!\xD9[kmT\fm-\xD8\x9F\xD0\x9C\x1C\x16W\x140r\t\xADE\xCE&)\xCFY\x05]\xFB\x88o@6\xA0\x93\x00\t\xC8\x8C\xCEI\x11\x93\ac<UQK!\x81\x1F\xD0\t\xB8\x9Eg`\x99\t\xCD\x90T\x93\x10>\x03\xBE\xB5\xBD^\v\xF8\x8Ek:\xB6\x00\r\x80,\xED\xEE\xEA|\xB0Z\x99\xB2\ba^g\xBD\x91i:\xFE\xA2\xA5\x11w\xF8\xB6\xE0\xF90Y\x8A\xA9\xE8!\x92\x15\xC6\xBB}]\xEFk\x062\xDE\xF0G\xB6\xB9`<\xAC\x99\xD1\n9u'\xE2W@\xDEy\xCA~z\xD3\x93\xEC\xBD\xEC\xD3\x14\xC01\"(0\xAB\xFE\xF5\xA6w\xF7M\xFEF\xDEI\xCC\xBB\x87|\x8Fds\x82R\x12.\xC8`0\xB83\x84\xE67\xF9\x9D!,\x02\xFFW\xD5\xA6\xDC\xC4\xD1\xF7\x19\xF8\x87X\xCEh\xC5H\xC4\xAEX\n.\xA3\"`\xF0\x8C\x8CS\x18y\xC9\xE9\x1E\xA9\xF84\x91$/f$\xE5W\xA8W\x9C:+\xAAK\xFC\xCCsrR\xD1)\x18\x9A<\xFC\xC0\xC2\x84T\xACq\x03\x03\x02\e\a\xD5\xDD\xEE\xEFQ\x8E\xC2\x89\x12\xB7B\xA4\xAA\xCD\xA3\x02\xD7@?\xD5\xEF\xFCT'\x8EL\xA8$\tt\xC5u\n^m\xC6\xD3\x94d\xF4\x92\x919\f\x04IbF\x02&A\x05\x03\xF2`NP\xD7\xB8\x14lq\x82|\xA2EN\x80sY\x9D\x83k\xC2)\x04\xD7La\x82\x1A\xC5\xC8%\x9EG\xED\xD1u\xD6\xA2\xC5L\xA6\x0E\xB8\xE8\x9B\xD1\\\xE2\f\xA42\xCFk\xB68:l\x81\xA3\a\xEB\xE7\xBC\xB1\xC1\xAC\xBB\v\x9F\rv\xB2V\xECt\x87gS\"\xAA\x10\x16\xE8\xDCJEg\x83)\x97I\x1Dlz\x95\x0E`\xC3\xC5j\xC3\x8C\n\xD8i\xD9\xD0\xCFxX\x15\x01h\xE5rP\xE6S\x90\xA0\x15\x95e\xED\xA7\xC5P\x14\x02Z\x11?0E\x88>\xC4\x00\x19\x17\x15\xE8\xA4,\e\x9DT,\xE3y$\x94ndA$\xDAD\xAD-\xC8,\x81\x80\xD3\xA9g\x06\xE2\xA2\r\xCA\x1A\x8D\xB4\xAA\"\xB0W\xC4bZ\xA7r\x8FpX\xB0\xCE\x05\xE2H\x19VV\xB4\ta\")f\xA2\xDD\f09\x83\x7F`1\xC0h5'\xBA\x06\xE0\x82\x0EL\x82\xF6\x1A\xA9@`\x15\xEE@VbhD0\xD0Q\x04\x9D\xA8*\xDA`\x03\\\tU\xFD+\xEA\xD8\x00\xE9\x81Z\xDE\xD4\xC8bq\x90\xAF\x91\xA4\x15`\xD7zi\x91OAD\xBB\x9D\xD5hc\x13\x16_\n\x8E\xCE\x91\x81\xE7Z\x83\xC7\x1985h[A7\xB8\xBE\xCB\xB4hhy\x06Z\x87\x85\b\r\x95\xFF\x1A\xBC\xA9!K\xD3ps\xF5\v\xA6=\xA6\x11#\x94\x88\xB0\xE2\xA5\xBCG\xCE+\x9C\x90CK\x80k\x94\x85\x80\xC6G07\x82&\xC0\x1A\xB0\x8F\xC8Z\x16\x15\xA7\xE9=2N\x90)\xA0\x13e\\\xB9%\nd\x1D\x8C\x80F\xDE\xD6B\x12\x96C~\t\x98\x00\xEB(\xB3\x81\x9B&\f\x1C>\x81\x90\x04z\x83-\xBES`[Hws\xE5\xC0\xAEc\x16\xB6z\x81\xA6[\x11\xA6Y\xA4c\v\xE0{H\x85`R\fU\\\x17\xC3@D\x00\xA3\x961Kv6\xD3\x10p3\x16\b\x0E\xF6V\xCAh\xE8\x04\x90\x88\x04\xCF \x10(\xCD\xC0\xC0\xBAj\x0E\t\xBF\xA8\xA1\xFB\x11\xA4L\xA0M&\x94\xBD\xEE\xE79(\"d\x18\x8A\xC4\x80\xA8\xA18\xB1b1\xAB\x04\xF2\v\xBF\xC54\xE3\xA9\x8Ac\xCF\xC1?S\xE5\xC3\xC6s\x10;\x839/:\xF7\x8CL@\xFD\xA3\x89\xE8\xFA6tu\e\x85YX\bO\xB2G\x1EU\x8C\xA9\x0F\xCF\x98T\xFF\x8Fy\x94\xE3\x92\xB81\xCE-\xE31\xCB\x05\e\xDC\x12\xC7\xD94\xDApo\xD0BT\x18\x16-\e\xA3(e\x19\xCD\xFB\x8D\xBD\xFA\x11+\xD3\xA2\xF5\xF8\x14\xA0\x97\xC1\x81C\x8AA \xA8y\x1A5~\xE2\xB8\x9B\xD5\xE0V\tZ\x8B\x04\xB1\tJSC\xA6I\xBFDC\x02\x1F\xC1\xE0\t\xF9\x016\xA3\xF9\xBCM\x8E\xDBF\xD0\xA9\x1A\x1C&\x05\x0F\xD9\x8F\xB7w\xE6\xC7<\xA7\xA3\xD1\xB8\x06\x03)\xD5o\x9E\xFA,\x01\xC4\xC0\x0F%\xCB1\xE4\x87\xB2*B&\x84r+U\x91\x12\xA1\xAC\xFA#\x99U\x80G\f\xC5JA9\xDD\xE1M M\x00\xCF\x97_\x8A\xD5\xA4\xA9m\xC9\xC4\x14\xBE\x1FrB\xA7\xE0\xAC\xBAx\x06=jAu\xE0&W\xF9\x8Et\xEC;\x027v\x05QN\xD5\x15\eAY\xE5\n\x80Ie\x04\x8C\xC9\x8D\v\x00\xFB\x04\xE0g\xB3.\x12\xABqmP\x1E(\xBC\x9C\xA4\x8C\x02\xE11:+o\x81\xD5G-\x04\xD4-j,\xC4\xE3E,\x9E\xB5\xF1\xF6{h\xE6\x10R\xC0\x8A\x821\x92\x83\xD2\x97BB\x06\xB3\xF0\x16\xA8\b\xE5\xDD\xC8\xBA6VR\xC6\x1CR\x87\xBD\xDEz\x82>\x9B\xCD\xBA\x04}\xCD\x1D\xF4>Bj\x8AZl\xD2nX\xAFb\xA9*\xB1D\xC2KUk+\xDD\x14\x15~l\xAA\xF1\xDF\xDB\x19\x96\x059\xBA\x87\"\xCCK\xCC\x10\xD1\xE5\xE0z\xE8\x99\xD5L\xB5\x94\xB2\xD1ub\xD0\x92\x0Fq\xDA\xB0[\xEC#\xCCo\x8B\xAE\xDF\x97\xC5\xBF\xDAO\xD7\f\xD7\xD1\xF4\xE5~8\xAE\xF7\xF1\xB7\x8F(3$O\xD1\x8E9\xFD\x95\xE1\xCD \x10\xB0\xED\xD3\xAE\xEF2tCs\x9DO\xCCm\x06\xD8\x9F\x19\xE0}r\x80n\xFB\x8E\xF7\xC9\x01\x8EnY\x9F\e\xE0l\x0F\xF8\r\x95\xD8"
-> "\xB6ue\x15\xB4\x82\xA1\xF30\xAD#4\xC8\xF6\x85J\x00U\x02\x16\xD4\xDByq\x9FLk.)r\x87\xCE\xD5\xF7\xB2`\x12\x12\x06dN\xD5\xA20\xA49\x14\xD7\xAC\xADy\x1A\x04\xB6\x95\xFEz\x99\xAF\xF9#\xD3\x1A\x19\xDE\"\xE9os\xA2\xA6\xF2\xA8\xE6\xF0?b\xDD\n]\xD9\xDE\xD4\xEB\x80O\xC7\xD7L\xCD\xF1}\xC7\x82?.\xCC\x06_\xC8\x11\xE7*A\x19\x88*\xAA\xFE=\xC5&D\x17t\xC74dAQ\\v\vv\xDF\xD5\x8Am\x13\xAF\x84\x9C,K,\x9C\x05\x1D\x93\xDDE\xD7\x94a^\xA6*&\x88\xE7PN\t\x01\x99_\xB4\xA8\xFAnY\e\xEF\xBE\x90Ze\xC6\xD0v\xA9\xAF\e\xAEO-[\xB3,O\x0F|\xDB\xB0\xA1\x85\xDA\xA1e\xD8^|\x93\xDB\xA8P\x7F\xEA\x9B?\xBF\xE6\x8F\xDF\xBFv\xC4}3\xE1\xDE\xC5\xC5\x83wW??>\xC9\x1FO}\xAD\x9E=|\xFE\xF0\x85\x93N\x9Fj\xC7\x8B\x828b\xE0\xAF\xD0\x8A\xCBBV)}\x82\xE5f\xCC\xD7{\xF2\xFAr\xBDA\xD4\xA2D\x95-\eS\xBAT\xF7\x8AbE\x11B\xAE\x05\xD6\xCFs\x16*\xFF\xA3\xD8\xCC\xAE8\x14\"\xB4\x92\e\x90\xC0N\xF8P\"z\x7F\xEDM1B\n4\x8F\xFA0@\xCF\x8B\xD2G\xA0h\x1E\xCF{\xBF\xB5\xEE\xB0\xF5\x8Cbq\x05\xB4\r\xA9\x8F\xDB\xA0\xE1P(\xD0iE\xB3\xAE\xA1bQ\xC4\x17\x12\x89\xB2P\x9B\xB4_%\xE4Ea\xB2\xFAM\"`\x9A\xAF\xE0\xE9e\x1D\xB4\xF8F\x96&u\x16\xFC\x85\xF0r\xCD\xE1\x91E+\xB6\xBEah\xDA\xEB\xC1\x87\xE6\x8Em\xA5mS\x85\e\xB1h;|u\x1Ep+~u\x11o\xCBU~q\b\xEB\xA6\x8A\xF6\xF6\n\xC2\xD8\xC7\xCD\xB0\xB8\xE5q\xB3\xE6\xAA\x05<\xC9\xD6e\xCC\xEA\x1Di\v{\xD6\x94.p2X\xF2\xA0-,\xD4y\xB3\xA60S\x13+\xF6\xAE\xE6\x15\x03\xDE\xC1\xF1K\xD5\xDA\xD2n\x13\xFF)\xCF:\bwJ\xBC&X\xEE\x16[\xDF\x14[\xFF\xBC\xD8'\xEA\x8EI\x90\xE7y:\xFFcE\xDF\x1D\xCB\xAF\x91\\\xDBR\xB9j\xDA\xBC\x98\xEE\xAE\xA94\x0F\xFA!b\r\\\xC35=m%p\xAD\x9E\xEDHe\xD4M6\x89\xA9~s[T\xA7\xEBy\x1D\x97bq\xA3\x12u1\x16\xCB\x93\xB6d]\xB9\xAA\x86\xBC\x98\x81\x97\x12\xDD\xD1\x81\xE3\xDB\xD2\xD9\xEA\xDA\xDC\x19i\xDE\xC0C\xE49\v\xE9V\"Q3\x7F\xE3\x82\x0F\x1A\xA0\xE8\xED\xBEj+\xF7t],\xBB\xEE\xE2nuO\xCDs\xCD\xA5FV\f\xDA9\xCA\xEBl*\xB9L\xD5\xAD\"\xA8J\x11\x04l\x9B\xAF\xEF\xB8\x9A\xC6\xAE\xDF*\x0E\xC3\x84\x85\x97\xE0\a\xEEU<\xFAi\x99\xAC]\x87\x8E\xE5\x88\xFF=\xEF\xF0M\xE0j\x8E\fs`\xFB>lw\x03\xB8\xB6\xA5\xFD6b\xD5\xC5\xA3\xA8\x9B\xBB\x0F\x88\x81s\x81\xB7Vh\xE0\xDB\xC3\x15p\xA3\x8F\f}\xE0\x83t\xF6N\xB8~Q \xD4v\x06\xC2F\xA9\xC36K\x1F\x1A\xAEa\x85\xA1g\xFA\xA6\xC3\xAC(\xC4\x87w\x81\xAE{\xBE\xEDQ\xDFd6\xBBI(|\xFE\xF4\xAC`\xFEd\x7Fn\xF6\x83\xF3\x93\xF1\x87\x0F^\x15\x18\x96Y\xB1\x87\xF4\x80\x8E\x1F\xA5\xFD\x93\xB7\xAF\xAE\xD89}:=hB\xE1:\xDF\xB4\xAF\xE2\xDBBi\xF8\xA0J\xFF\x1A\xBE\xB5\xB6\x06\xECD\x7F\x00\xE9\xEC\xCF\x92\xCE\xFE\xBF!\x9D\x89Nq\xE0\x9A\x96o\xBB7 \xDD\xCAE\xE75\xB1\"+\xD4\xAD\x96\xE4a\xAA\xEE{g\x8C\xC9\xE6^+g3\x91\xAA\v\a\xF1\x95D4\xED\x81k\x9B\xBE\xE6\xFF\x17\x88\xE8\xD9C\xD3\xF1Y\xC0\\\xCF2\xE3\xD8\xB2\xA3\xC8\xD3Y\xE4\x99V\x1Ci\xB6f[\x81u\x13\"\xDAo\x8F\x0F?\xD4W\xC6\\\xCF\xF9<\xD0\xCF\\\xF7\x15\x9F\xE8\xC7\xD6\xD4\x96\xEE\xCC\x1D\x1F\x8B\x97\xCF~>}\xD5\x7F9~w\xFF\e\x11\x11\x95f\xEA\x96\xFFU\x81o\xD5\xFE\x7F\f\e\xBD\xCF\xB2\xD1\xFB\xEB\xB3Q\xEB\x9B\xFA\x19\xA4k\xBA?2\xFC\x81o[\xAE\xAD\xDF\x80\x8D\xEB\xEF\x11l\xDF\xC7]\x9B\xB7}\x82~\xBF\xF6,\xDBvM\xC34,\xD7p<\xC7\xF6m\r+\xD1\rBz}\xCD\x01x\x9D\xE9\xD6H3F\x86;\xF0|\xCF\xD4\xF5oMHu\xFB4\f\xAD8\xB6#+\xA0q\xACY\xA6f\xD2\xD01-\b\x8EA\xA4\a\xAE\x17\xDF\x88\x90\xEE\xC5\xC9\xF9\x8B\xE4\xC5\xF3_\xC6\xD31\xF3-\xED\xFD\xF4\xD8:?\x7F,\x1F\x9F\x16\x8F\xC7\xF3\xF9\xBC\xA8\xE8\xBB\xD3\x0F\x8F\xF6'\a\xC5.B\xEA\xFEm\x18\xB9\xAD5\x885\xBE\xF35\x8C\\b\xE0\xAB\x13\xD2\xEEj\xEFz6v#\xFE\x84l\xB4\xB7\xD9h\x7F\x92\x8D\xE6HsG\xB6>\xD0,\xCBt\xACk\xD88\xAE\xCB\xB2\xA8\xE4\xD6\x05|\x00\x81\x10oq\xA0\xDA\x8D\xF0q\xE9\x8B\x83\xFB\xFB\xC7\a\xCDS$\xBC\xB3$\xEAa\xC7\x80<]\xBBT\xE7aB\xCA\xAAx\xCBB\xD9FVE\xF5\x96\xD1\ek\xDE2\x86\x1Ag\xE0dt\x03\x0E?\xF0MOwwRvW\xED\xF5\xC9\x10\xD4\x82r\x17\xF2n\x83\xE9F\xAB;\xE1|\x93\x93\xDC\b\xEC\xED5\xF5'\xC0\xDE\x8E\xF8\x13\x82\x1D\xE2\xCC\xAE\xD8\xF3\x19\xB8C6\xE8\x0F4W\xB3\xDD\xEBR\xC1\xF3]\xA0,)\x12 V\xCF\x8C\x96\xDE(,\xD4k\x1A\x90\xEC\xDD#\x17\xF8fF\xF3\x04\x8A\xD0 U\x13\xAF\n\xC9\xF0\xAD\f\x9E\xA1\xA9\xF1\xB5\x8D\x88\x85\x1C\x9F65\xD9\xA2\xA4\xE9%Q\xF7\xFB\x988\x92\x18\xC4\x86\x92\xAEy\x93a+\xEB\x1C|2\x94Y"
-> "XCy\x96\rq\xC0\xF9l(\xB3\x80\xF1\xA6\xA3\xAD\xA8\xE0[\x852|\f2\f5;0\xA0\"\xA31\x8D\xAC\xD8\xD2ih;\xA1\xED\x05\x8E\e:\xD4r\xCD\x9B\x84\xB2w\xFB\xAF\x02\xDB\x1C\xF3\xBA?\xB9x+\xA6\xBF\x9C\xCA\x17/\x9F\\\x1D\xF6_\xCAG\xD9\xF1\xFC\xEC(a\x0F\x9E=}\xECX\xEF\xD4\xEBy[\xA1\xCC\xFC\xFAH\x86J\x83\xE0\xA0\xED,\xF2\xDC/\vcK\xE0|]0k\x9F2\xAD\xF2[\xD7\xD6\xD9\xED\xFC\x19\xD9\xDD\xF1\x19@\xA0\b]\xE0\v\f\x88\xE7\x12p\b]\x00\xD6\xDE\xC8\xBA\xA6\xE83\xB43C\eY\xDE\xE8\xDA\xFC\xF2\x1C_\vR\xCF\x8F!\x18\xFD\r6!\xF84M\xBDF\xB7G\x8E\xBE_'1\xBE>D\xF0U\x91\b_\x04\"P\xEB\xE1W|\xFBA\xBD@\xB6\xF5N\xEB\x1E\xA1\x11\xBE\xD0\xB7\xA4\xF3\xF2\xCD\xAD-N\xB7\xCF\xE8\x94$k\xE6\xEF0\xB3x\n|\xED3\xD6\xFF\x00\\{\x80z\x8A-\x00\x00"
read 3551 bytes
reading 2 bytes...
-> "\r\n"
read 2 bytes
-> "0\r\n"
-> "\r\n"
Conn close
Traceback (most recent call last):
        1: from (irb):2
NoMethodError (undefined method `campaign=' for nil:NilClass)

when I call it within a background job, I see this error:

undefined method `campaign=' for nil:NilClass
/app/vendor/bundle/ruby/2.5.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:152:in `set_key'
/app/vendor/bundle/ruby/2.5.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:94:in `block (2 levels) in build'
/app/vendor/bundle/ruby/2.5.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:80:in `each'
/app/vendor/bundle/ruby/2.5.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:80:in `block in build'
/app/vendor/bundle/ruby/2.5.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:76:in `each'
/app/vendor/bundle/ruby/2.5.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:76:in `build'
/app/vendor/bundle/ruby/2.5.0/gems/json-api-vanilla-1.0.1/lib/json-api-vanilla/parser.rb:20:in `parse'
/app/vendor/bundle/ruby/2.5.0/gems/patreon-0.5.0/lib/patreon/api.rb:53:in `parse_json'
/app/vendor/bundle/ruby/2.5.0/gems/patreon-0.5.0/lib/patreon/api.rb:33:in `get_parse_json'
/app/vendor/bundle/ruby/2.5.0/gems/patreon-0.5.0/lib/patreon/api.rb:12:in `fetch_campaign'
/app/app/services/patreon/get_patrons_service.rb:7:in `perform'
/app/app/jobs/set_patreon_contributors_job.rb:4:in `perform'
/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.2/lib/active_job/execution.rb:39:in `block in perform_now'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/callbacks.rb:109:in `block in run_callbacks'
/app/vendor/bundle/ruby/2.5.0/gems/i18n-1.5.3/lib/i18n.rb:284:in `with_locale'
/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.2/lib/active_job/translation.rb:9:in `block (2 levels) in <module:Translation>'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/callbacks.rb:118:in `instance_exec'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/callbacks.rb:118:in `block in run_callbacks'
/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.2/lib/active_job/logging.rb:26:in `block (4 levels) in <module:Logging>'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/notifications.rb:168:in `block in instrument'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/notifications.rb:168:in `instrument'
/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.2/lib/active_job/logging.rb:25:in `block (3 levels) in <module:Logging>'
/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.2/lib/active_job/logging.rb:46:in `block in tag_logger'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/tagged_logging.rb:71:in `block in tagged'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/tagged_logging.rb:28:in `tagged'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/tagged_logging.rb:71:in `tagged'
/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.2/lib/active_job/logging.rb:46:in `tag_logger'
/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.2/lib/active_job/logging.rb:22:in `block (2 levels) in <module:Logging>'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/callbacks.rb:118:in `instance_exec'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/callbacks.rb:118:in `block in run_callbacks'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/callbacks.rb:136:in `run_callbacks'
/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.2/lib/active_job/execution.rb:38:in `perform_now'
/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.2/lib/active_job/execution.rb:24:in `block in execute'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/callbacks.rb:109:in `block in run_callbacks'
/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.2/lib/active_job/railtie.rb:28:in `block (4 levels) in <class:Railtie>'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/execution_wrapper.rb:87:in `wrap'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/reloader.rb:73:in `block in wrap'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/execution_wrapper.rb:87:in `wrap'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/reloader.rb:72:in `wrap'
/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.2/lib/active_job/railtie.rb:27:in `block (3 levels) in <class:Railtie>'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/callbacks.rb:118:in `instance_exec'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/callbacks.rb:118:in `block in run_callbacks'
/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2/lib/active_support/callbacks.rb:136:in `run_callbacks'
/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.2/lib/active_job/execution.rb:22:in `execute'
/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.2/lib/active_job/queue_adapters/delayed_job_adapter.rb:42:in `perform'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/backend/base.rb:81:in `block in invoke_job'
/app/vendor/bundle/ruby/2.5.0/gems/rollbar-2.18.2/lib/rollbar/plugins/delayed_job/plugin.rb:39:in `block in invoke_job_callback'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:79:in `block (2 levels) in add'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:61:in `block in initialize'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:79:in `block in add'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:66:in `execute'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:40:in `run_callbacks'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/backend/base.rb:78:in `invoke_job'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:230:in `block (2 levels) in run'
/app/vendor/ruby-2.5.3/lib/ruby/2.5.0/timeout.rb:93:in `block in timeout'
/app/vendor/ruby-2.5.3/lib/ruby/2.5.0/timeout.rb:103:in `timeout'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:230:in `block in run'
/app/vendor/ruby-2.5.3/lib/ruby/2.5.0/benchmark.rb:308:in `realtime'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:229:in `run'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:312:in `block in reserve_and_run_one_job'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:61:in `block in initialize'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:66:in `execute'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:40:in `run_callbacks'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:312:in `reserve_and_run_one_job'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:213:in `block in work_off'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:212:in `times'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:212:in `work_off'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:175:in `block (4 levels) in start'
/app/vendor/ruby-2.5.3/lib/ruby/2.5.0/benchmark.rb:308:in `realtime'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:174:in `block (3 levels) in start'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:61:in `block in initialize'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:66:in `execute'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:40:in `run_callbacks'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:173:in `block (2 levels) in start'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:172:in `loop'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:172:in `block in start'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/plugins/clear_locks.rb:7:in `block (2 levels) in <class:ClearLocks>'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:79:in `block (2 levels) in add'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:61:in `block in initialize'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:79:in `block in add'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:66:in `execute'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/lifecycle.rb:40:in `run_callbacks'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:171:in `start'
/app/vendor/bundle/ruby/2.5.0/gems/delayed_job-4.1.5/lib/delayed/tasks.rb:9:in `block (2 levels) in <main>'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/task.rb:273:in `block in execute'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/task.rb:273:in `each'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/task.rb:273:in `execute'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/task.rb:214:in `block in invoke_with_call_chain'
/app/vendor/ruby-2.5.3/lib/ruby/2.5.0/monitor.rb:226:in `mon_synchronize'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/task.rb:194:in `invoke_with_call_chain'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/task.rb:183:in `invoke'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/application.rb:160:in `invoke_task'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/application.rb:116:in `each'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/application.rb:116:in `block in top_level'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/application.rb:125:in `run_with_threads'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/application.rb:110:in `top_level'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/application.rb:83:in `block in run'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/application.rb:186:in `standard_exception_handling'
/app/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/lib/rake/application.rb:80:in `run'
/app/bin/rake:9:in `<main>'

undefined method `pledges=' for nil:NilClass

After upgrading the Patreon gem to v0.3.0, performing the OAuth flow using the following code snippet throws an exception on the last line during the callback to my service. Downgrading the Patreon gem to v0.2.0 solves the error.

Initial sendover:

redirect_to("https://www.patreon.com/oauth2/authorize?response_type=code&client_id=#{ENV['PATREON_CLIENT_ID']}&redirect_uri=#{redirect_uri}")

Callback:

oauth_client = Patreon::OAuth.new(ENV['PATREON_CLIENT_ID'], ENV['PATREON_CLIENT_SECRET'])

tokens = oauth_client.get_tokens(params[:code], redirect_uri)
access_token = tokens['access_token']
refresh_token = tokens['refresh_token']

api_client = Patreon::API.new(access_token)
user_response = api_client.fetch_user() # raises exception
undefined method `pledges=' for nil:NilClass

app/controllers/patreon_users_controller.rb:16:in `in' # the user_response line

I don't see any patch notes so I'm unsure if this is an intentional change in how the gem should be used, or a bug.

I'm running Rails 5.1.4 on Ruby 2.4.2. Full trace is below. Thanks for any assistance!

json-api-vanilla (1.0.1) lib/json-api-vanilla/parser.rb:152:in `set_key'
json-api-vanilla (1.0.1) lib/json-api-vanilla/parser.rb:94:in `block (2 levels) in build'
json-api-vanilla (1.0.1) lib/json-api-vanilla/parser.rb:80:in `each'
json-api-vanilla (1.0.1) lib/json-api-vanilla/parser.rb:80:in `block in build'
json-api-vanilla (1.0.1) lib/json-api-vanilla/parser.rb:76:in `each'
json-api-vanilla (1.0.1) lib/json-api-vanilla/parser.rb:76:in `build'
json-api-vanilla (1.0.1) lib/json-api-vanilla/parser.rb:20:in `parse'
/usr/local/bundle/bundler/gems/patreon-ruby-0530a2fbb30f/lib/patreon/api.rb:39:in `get_json'
/usr/local/bundle/bundler/gems/patreon-ruby-0530a2fbb30f/lib/patreon/api.rb:13:in `fetch_user'
app/controllers/patreon_users_controller.rb:16:in `in'
actionpack (5.1.4) lib/action_controller/metal/basic_implicit_render.rb:4:in `send_action'
actionpack (5.1.4) lib/abstract_controller/base.rb:186:in `process_action'
actionpack (5.1.4) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (5.1.4) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (5.1.4) lib/active_support/callbacks.rb:131:in `run_callbacks'
actionpack (5.1.4) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (5.1.4) lib/action_controller/metal/rescue.rb:20:in `process_action'
actionpack (5.1.4) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
activesupport (5.1.4) lib/active_support/notifications.rb:166:in `block in instrument'
activesupport (5.1.4) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (5.1.4) lib/active_support/notifications.rb:166:in `instrument'
actionpack (5.1.4) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (5.1.4) lib/action_controller/metal/params_wrapper.rb:252:in `process_action'
activerecord (5.1.4) lib/active_record/railties/controller_runtime.rb:22:in `process_action'
actionpack (5.1.4) lib/abstract_controller/base.rb:124:in `process'
actionview (5.1.4) lib/action_view/rendering.rb:30:in `process'
actionpack (5.1.4) lib/action_controller/metal.rb:189:in `dispatch'
actionpack (5.1.4) lib/action_controller/metal.rb:253:in `dispatch'
actionpack (5.1.4) lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
actionpack (5.1.4) lib/action_dispatch/routing/route_set.rb:31:in `serve'
actionpack (5.1.4) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (5.1.4) lib/action_dispatch/journey/router.rb:33:in `each'
actionpack (5.1.4) lib/action_dispatch/journey/router.rb:33:in `serve'
actionpack (5.1.4) lib/action_dispatch/routing/route_set.rb:834:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
omniauth (1.7.1) lib/omniauth/strategy.rb:190:in `call!'
omniauth (1.7.1) lib/omniauth/strategy.rb:168:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
omniauth (1.7.1) lib/omniauth/builder.rb:63:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/rack/agent_hooks.rb:30:in `traced_call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/rack/browser_monitoring.rb:32:in `traced_call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
meta_request (0.4.3) lib/meta_request/middlewares/app_request_handler.rb:13:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
meta_request (0.4.3) lib/meta_request/middlewares/meta_request_handler.rb:13:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
rack (2.0.3) lib/rack/etag.rb:25:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
rack (2.0.3) lib/rack/conditional_get.rb:25:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
rack (2.0.3) lib/rack/head.rb:12:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
rack (2.0.3) lib/rack/session/abstract/id.rb:232:in `context'
rack (2.0.3) lib/rack/session/abstract/id.rb:226:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
actionpack (5.1.4) lib/action_dispatch/middleware/cookies.rb:613:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
activerecord (5.1.4) lib/active_record/migration.rb:556:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
actionpack (5.1.4) lib/action_dispatch/middleware/callbacks.rb:26:in `block in call'
activesupport (5.1.4) lib/active_support/callbacks.rb:97:in `run_callbacks'
actionpack (5.1.4) lib/action_dispatch/middleware/callbacks.rb:24:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
actionpack (5.1.4) lib/action_dispatch/middleware/executor.rb:12:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
better_errors (2.4.0) lib/better_errors/middleware.rb:59:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
actionpack (5.1.4) lib/action_dispatch/middleware/debug_exceptions.rb:59:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
rack-contrib (1.2.0) lib/rack/contrib/response_headers.rb:17:in `call'
meta_request (0.4.3) lib/meta_request/middlewares/headers.rb:16:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
actionpack (5.1.4) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
railties (5.1.4) lib/rails/rack/logger.rb:36:in `call_app'
railties (5.1.4) lib/rails/rack/logger.rb:24:in `block in call'
activesupport (5.1.4) lib/active_support/tagged_logging.rb:69:in `block in tagged'
activesupport (5.1.4) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (5.1.4) lib/active_support/tagged_logging.rb:69:in `tagged'
railties (5.1.4) lib/rails/rack/logger.rb:24:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
actionpack (5.1.4) lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
request_store (1.3.2) lib/request_store/middleware.rb:9:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
actionpack (5.1.4) lib/action_dispatch/middleware/request_id.rb:25:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
rack (2.0.3) lib/rack/method_override.rb:22:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
rack (2.0.3) lib/rack/runtime.rb:22:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
activesupport (5.1.4) lib/active_support/cache/strategy/local_cache_middleware.rb:27:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
actionpack (5.1.4) lib/action_dispatch/middleware/executor.rb:12:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
actionpack (5.1.4) lib/action_dispatch/middleware/static.rb:125:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
rack (2.0.3) lib/rack/sendfile.rb:111:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
railties (5.1.4) lib/rails/engine.rb:522:in `call'
newrelic_rpm (4.5.0.337) lib/new_relic/agent/instrumentation/middleware_tracing.rb:92:in `call'
puma (3.10.0) lib/puma/configuration.rb:225:in `call'
puma (3.10.0) lib/puma/server.rb:605:in `handle_request'
puma (3.10.0) lib/puma/server.rb:437:in `process_client'
puma (3.10.0) lib/puma/server.rb:301:in `block in run'
puma (3.10.0) lib/puma/thread_pool.rb:120:in `block in spawn_thread'

Can't run test suite

patreon-ruby (master)$ rspec

An error occurred while loading ./spec/api_spec.rb.
Failure/Error:
  describe Patreon::API do
    before do
      @api = Patreon::API.new("some token")
    end
  
    describe "Patreon::API#fetch_user" do
      before(:all) do
        @response = File.read(File.expand_path("fixtures/current_user.json", __dir__))
      end

NameError:
  uninitialized constant Patreon::API
# ./spec/api_spec.rb:1:in `<top (required)>'

An error occurred while loading ./spec/util_spec.rb.
Failure/Error:
  describe Patreon::Utils::JSONAPI::URLUtil do
    describe "build_url" do
      it "should build a url" do
        url = Patreon::Utils::JSONAPI::URLUtil.build_url("/")
        assert_equal url, "/"
      end
  
      it "should build a url with a string includes" do
        url = Patreon::Utils::JSONAPI::URLUtil.build_url("/", "include")
        assert_equal url, "/?include=include"

NameError:
  uninitialized constant Patreon::Utils
# ./spec/util_spec.rb:1:in `<top (required)>'
No examples found.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.