Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

undefined method `split' for nil:NilClass #206

Open
danielbonnell opened this issue Mar 21, 2017 · 2 comments
Open

undefined method `split' for nil:NilClass #206

danielbonnell opened this issue Mar 21, 2017 · 2 comments

Comments

@danielbonnell
Copy link

Hello,

I believe I've found a bug, however I can't tell if it's with MetaInspector, Faraday, or Faraday Middleware. I don't know much about the internals of either library. I'm running metainspector 5.4.1 with faraday 0.11.0 and faraday_middleware 0.11.0.1.

This only seems to occur with some urls. Here's an example url that triggers the bug:

url = 'https://goo.gl/fb/58mCnj'

Here is my code from line 17 of /app/workers/build_link_preview.rb. It's a pretty standard setup:

MetaInspector.new(url, connection_timeout: 5, read_timeout: 3, retries: 2, download_images: true, faraday_options: { ssl: { verify: false } })

Here's the complete stack trace:

undefined method `split' for nil:NilClass
/app/vendor/bundle/ruby/2.3.0/gems/faraday_middleware-0.11.0.1/lib/faraday_middleware/response/follow_redirects.rb:128:in `safe_escape'
/app/vendor/bundle/ruby/2.3.0/gems/faraday_middleware-0.11.0.1/lib/faraday_middleware/response/follow_redirects.rb:92:in `update_env'
/app/vendor/bundle/ruby/2.3.0/gems/faraday_middleware-0.11.0.1/lib/faraday_middleware/response/follow_redirects.rb:83:in `block in perform_with_redirection'
/app/vendor/bundle/ruby/2.3.0/gems/faraday-0.11.0/lib/faraday/response.rb:61:in `on_complete'
/app/vendor/bundle/ruby/2.3.0/gems/faraday_middleware-0.11.0.1/lib/faraday_middleware/response/follow_redirects.rb:80:in `perform_with_redirection'
/app/vendor/bundle/ruby/2.3.0/gems/faraday_middleware-0.11.0.1/lib/faraday_middleware/response/follow_redirects.rb:85:in `block in perform_with_redirection'
/app/vendor/bundle/ruby/2.3.0/gems/faraday-0.11.0/lib/faraday/response.rb:61:in `on_complete'
/app/vendor/bundle/ruby/2.3.0/gems/faraday_middleware-0.11.0.1/lib/faraday_middleware/response/follow_redirects.rb:80:in `perform_with_redirection'
/app/vendor/bundle/ruby/2.3.0/gems/faraday_middleware-0.11.0.1/lib/faraday_middleware/response/follow_redirects.rb:66:in `call'
/app/vendor/bundle/ruby/2.3.0/gems/faraday_middleware-0.11.0.1/lib/faraday_middleware/gzip.rb:24:in `call'
/app/vendor/bundle/ruby/2.3.0/gems/faraday-0.11.0/lib/faraday/request/retry.rb:116:in `call'
/app/vendor/bundle/ruby/2.3.0/gems/faraday-0.11.0/lib/faraday/rack_builder.rb:139:in `build_response'
/app/vendor/bundle/ruby/2.3.0/gems/faraday-0.11.0/lib/faraday/connection.rb:377:in `run_request'
/app/vendor/bundle/ruby/2.3.0/gems/faraday-0.11.0/lib/faraday/connection.rb:140:in `get'
/app/vendor/bundle/ruby/2.3.0/gems/metainspector-5.4.1/lib/meta_inspector/request.rb:74:in `block in fetch'
/app/vendor/ruby-2.3.0/lib/ruby/2.3.0/timeout.rb:91:in `block in timeout'
/app/vendor/ruby-2.3.0/lib/ruby/2.3.0/timeout.rb:33:in `block in catch'
/app/vendor/ruby-2.3.0/lib/ruby/2.3.0/timeout.rb:33:in `catch'
/app/vendor/ruby-2.3.0/lib/ruby/2.3.0/timeout.rb:33:in `catch'
/app/vendor/ruby-2.3.0/lib/ruby/2.3.0/timeout.rb:106:in `timeout'
/app/vendor/bundle/ruby/2.3.0/gems/metainspector-5.4.1/lib/meta_inspector/request.rb:51:in `fetch'
/app/vendor/bundle/ruby/2.3.0/gems/metainspector-5.4.1/lib/meta_inspector/request.rb:41:in `response'
/app/vendor/bundle/ruby/2.3.0/gems/metainspector-5.4.1/lib/meta_inspector/request.rb:25:in `initialize'
/app/vendor/bundle/ruby/2.3.0/gems/metainspector-5.4.1/lib/meta_inspector/document.rb:32:in `new'
/app/vendor/bundle/ruby/2.3.0/gems/metainspector-5.4.1/lib/meta_inspector/document.rb:32:in `initialize'
/app/vendor/bundle/ruby/2.3.0/gems/metainspector-5.4.1/lib/meta_inspector.rb:20:in `new'
/app/vendor/bundle/ruby/2.3.0/gems/metainspector-5.4.1/lib/meta_inspector.rb:20:in `new'
/app/app/workers/build_link_preview.rb:17:in `perform'
/app/vendor/bundle/ruby/2.3.0/gems/resque-status-0.5.0/lib/resque/plugins/status.rb:161:in `safe_perform!'
/app/vendor/bundle/ruby/2.3.0/gems/resque-status-0.5.0/lib/resque/plugins/status.rb:137:in `perform'
@jaimeiniesta
Copy link
Owner

Thanks for the bug report. First time I tried I got a timeout, then I increased the time to 50 seconds:

url = 'https://goo.gl/fb/58mCnj'

MetaInspector.new(url, connection_timeout: 50, read_timeout: 50, retries: 2, download_images: true, faraday_options: { ssl: { verify: false } })

And then I get a similar error. There seems to be an error in faraday_middleware-0.11.0.1 so we should investigate if an upgrade to the latest version of that library (if any) fixes it, and if it doesn't, write an example that to open an issue on their project.

@jaimeiniesta
Copy link
Owner

Tried again the above example on MetaInspector 5.6.0 but it failed with:

2.2.4 :015 > url = 'https://goo.gl/fb/58mCnj'
 => "https://goo.gl/fb/58mCnj"
2.2.4 :016 > MetaInspector.new(url, connection_timeout: 50, read_timeout: 50, retries: 2, download_images: true, faraday_options: { ssl: { verify: false } })
MetaInspector::RequestError: too many redirects; last one to:
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/metainspector-5.6.0/lib/meta_inspector/request.rb:52:in `rescue in response'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday_middleware-0.12.2/lib/faraday_middleware/response/follow_redirects.rb:82:in `block in perform_with_redirection': too many redirects; last one to:  (FaradayMiddleware::RedirectLimitReached)
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday-0.15.3/lib/faraday/response.rb:61:in `on_complete'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday_middleware-0.12.2/lib/faraday_middleware/response/follow_redirects.rb:80:in `perform_with_redirection'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday_middleware-0.12.2/lib/faraday_middleware/response/follow_redirects.rb:85:in `block in perform_with_redirection'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday-0.15.3/lib/faraday/response.rb:61:in `on_complete'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday_middleware-0.12.2/lib/faraday_middleware/response/follow_redirects.rb:80:in `perform_with_redirection'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday_middleware-0.12.2/lib/faraday_middleware/response/follow_redirects.rb:85:in `block in perform_with_redirection'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday-0.15.3/lib/faraday/response.rb:61:in `on_complete'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday_middleware-0.12.2/lib/faraday_middleware/response/follow_redirects.rb:80:in `perform_with_redirection'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday_middleware-0.12.2/lib/faraday_middleware/response/follow_redirects.rb:85:in `block in perform_with_redirection'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday-0.15.3/lib/faraday/response.rb:61:in `on_complete'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday_middleware-0.12.2/lib/faraday_middleware/response/follow_redirects.rb:80:in `perform_with_redirection'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday_middleware-0.12.2/lib/faraday_middleware/response/follow_redirects.rb:85:in `block in perform_with_redirection'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday-0.15.3/lib/faraday/response.rb:61:in `on_complete'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday_middleware-0.12.2/lib/faraday_middleware/response/follow_redirects.rb:80:in `perform_with_redirection'
... 23 levels...
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/faraday-0.15.3/lib/faraday/connection.rb:138:in `get'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/metainspector-5.6.0/lib/meta_inspector/request.rb:81:in `block in fetch'
	from /Users/jaime/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/timeout.rb:88:in `block in timeout'
	from /Users/jaime/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/timeout.rb:32:in `block in catch'
	from /Users/jaime/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/timeout.rb:32:in `catch'
	from /Users/jaime/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/timeout.rb:32:in `catch'
	from /Users/jaime/.rvm/rubies/ruby-2.2.4/lib/ruby/2.2.0/timeout.rb:103:in `timeout'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/metainspector-5.6.0/lib/meta_inspector/request.rb:58:in `fetch'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/metainspector-5.6.0/lib/meta_inspector/request.rb:48:in `response'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/metainspector-5.6.0/lib/meta_inspector/request.rb:27:in `initialize'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/metainspector-5.6.0/lib/meta_inspector/document.rb:33:in `new'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/metainspector-5.6.0/lib/meta_inspector/document.rb:33:in `initialize'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/metainspector-5.6.0/lib/meta_inspector.rb:20:in `new'
	from /Users/jaime/.rvm/gems/ruby-2.2.4/gems/metainspector-5.6.0/lib/meta_inspector.rb:20:in `new'
	from (irb):16

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants