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

old curb version uninstallable #15

Open
jon-ga opened this issue Nov 9, 2015 · 5 comments
Open

old curb version uninstallable #15

jon-ga opened this issue Nov 9, 2015 · 5 comments

Comments

@jon-ga
Copy link

jon-ga commented Nov 9, 2015

Summary: You're depending upon an old version of curb and should upgrade.

You have curb pinned to 0.7:

s.add_runtime_dependency(%q<curb>, ["~> 0.7.12"])

0.7.18 was released in January 2012.

I'm receiving the error below when trying to run gem install r_hapi. I came upon the following github issue which tells me that a newer version of curb should be used: taf2/curb#234

I manually updated the gemspec to depend upon curb 0.8.8 and it installed fine. I can't verify if there have been any breaking changes between 0.7 and 0.8, at the moment, as I'm still getting my API credentials.

$ ruby --version
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]

$ gem install r_hapi
Fetching: curb-0.7.18.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing r_hapi:
    ERROR: Failed to build gem native extension.

    /Users/jon/.rbenv/versions/2.2.3/bin/ruby -r ./siteconf20151109-21636-zg4qn1.rb extconf.rb
checking for curl-config... yes
checking for curlinfo_redirect_time... yes
checking for curlinfo_response_code... yes
checking for curlinfo_filetime... yes
checking for curlinfo_redirect_count... yes
checking for curlinfo_os_errno... yes
checking for curlinfo_num_connects... yes
checking for curlinfo_ftp_entry_path... yes
checking for curl_version_ssl... yes
checking for curl_version_libz... yes
checking for curl_version_ntlm... yes
checking for curl_version_gssnegotiate... yes
checking for curl_version_debug... yes
checking for curl_version_asynchdns... yes
checking for curl_version_spnego... yes
checking for curl_version_largefile... yes
checking for curl_version_idn... yes
checking for curl_version_sspi... yes
checking for curl_version_conv... yes
checking for curlproxy_http... yes
checking for curlproxy_socks4... yes
checking for curlproxy_socks5... yes
checking for curlauth_basic... yes
checking for curlauth_digest... yes
checking for curlauth_gssnegotiate... yes
checking for curlauth_ntlm... yes
checking for curlauth_anysafe... yes
checking for curlauth_any... yes
checking for curle_tftp_notfound... yes
checking for curle_tftp_perm... yes
checking for curle_tftp_diskfull... yes
checking for curle_tftp_illegal... yes
checking for curle_tftp_unknownid... yes
checking for curle_tftp_exists... yes
checking for curle_tftp_nosuchuser... yes
checking for curle_send_fail_rewind... yes
checking for curle_ssl_engine_initfailed... yes
checking for curle_login_denied... yes
checking for curlmopt_maxconnects... yes
checking for curlopt_seekfunction... yes
checking for curlopt_seekdata... yes
checking for curlopt_sockoptfunction... yes
checking for curlopt_sockoptdata... yes
checking for curlopt_opensocketfunction... yes
checking for curlopt_opensocketdata... yes
checking for curle_conv_failed... yes
checking for curle_conv_reqd... yes
checking for curle_ssl_cacert_badfile... yes
checking for curle_remote_file_not_found... yes
checking for curle_ssh... yes
checking for curle_ssl_shutdown_failed... yes
checking for curle_again... yes
checking for curle_ssl_crl_badfile... yes
checking for curle_ssl_issuer_error... yes
checking for curlopt_username... yes
checking for curlopt_password... yes
checking for curlinfo_primary_ip... yes
checking for curlauth_digest_ie... yes
checking for curlftpmethod_multicwd... yes
checking for curlftpmethod_nocwd... yes
checking for curlftpmethod_singlecwd... yes
checking for curlm_bad_socket... yes
checking for curlm_unknown_option... yes
checking for curl_multi_timeout()... yes
checking for curl_multi_fdset()... yes
checking for curl_multi_perform()... yes
checking for curlopt_interleavefunction... yes
checking for curlopt_interleavedata... yes
checking for curlopt_chunk_bgn_function... yes
checking for curlopt_chunk_end_function... yes
checking for curlopt_chunk_data... yes
checking for curlopt_fnmatch_function... yes
checking for curlopt_fnmatch_data... yes
checking for curlopt_errorbuffer... yes
checking for curlopt_stderr... yes
checking for curlopt_failonerror... yes
checking for curlopt_url... yes
checking for curlopt_protocols... yes
checking for curlopt_redir_protocols... yes
checking for curlopt_proxy... yes
checking for curlopt_proxyport... yes
checking for curlopt_proxytype... yes
checking for curlopt_noproxy... yes
checking for curlopt_httpproxytunnel... yes
checking for curlopt_socks5_gssapi_service... yes
checking for curlopt_socks5_gssapi_nec... yes
checking for curlopt_interface... yes
checking for curlopt_localport... yes
checking for curlopt_dns_cache_timeout... yes
checking for curlopt_dns_use_global_cache... yes
checking for curlopt_buffersize... yes
checking for curlopt_port... yes
checking for curlopt_tcp_nodelay... yes
checking for curlopt_address_scope... yes
checking for curlopt_netrc... yes
checking for curl_netrc_optional... yes
checking for curl_netrc_ignored... yes
checking for curl_netrc_required... yes
checking for curlopt_netrc_file... yes
checking for curlopt_userpwd... yes
checking for curlopt_proxyuserpwd... yes
checking for curlopt_username... yes
checking for curlopt_password... yes
checking for curlopt_password... yes
checking for curlopt_password... yes
checking for curlopt_httpauth... yes
checking for curlauth_digest_ie... yes
checking for curlauth_only... yes
checking for curlopt_tlsauth_type... yes
checking for curlopt_tlsauth_srp... no
checking for curlopt_tlsauth_username... yes
checking for curlopt_tlsauth_password... yes
checking for curlopt_proxyauth... yes
checking for curlopt_autoreferer... yes
checking for curlopt_encoding... yes
checking for curlopt_followlocation... yes
checking for curlopt_unrestricted_auth... yes
checking for curlopt_maxredirs... yes
checking for curlopt_postredir... yes
checking for curlopt_put... yes
checking for curlopt_post... yes
checking for curlopt_postfields... yes
checking for curlopt_postfieldsize... yes
checking for curlopt_postfieldsize_large... yes
checking for curlopt_copypostfields... yes
checking for curlopt_httppost... yes
checking for curlopt_referer... yes
checking for curlopt_useragent... yes
checking for curlopt_httpheader... yes
checking for curlopt_http200aliases... yes
checking for curlopt_cookie... yes
checking for curlopt_cookiefile... yes
checking for curlopt_cookiejar... yes
checking for curlopt_cookiesession... yes
checking for curlopt_cookielist... yes
checking for curlopt_httpget... yes
checking for curlopt_http_version... yes
checking for curl_http_version_none... yes
checking for curl_http_version_1_0... yes
checking for curl_http_version_1_1... yes
checking for curlopt_ignore_content_length... yes
checking for curlopt_http_content_decoding... yes
checking for curlopt_http_transfer_decoding... yes
checking for curlopt_mail_from... yes
checking for curlopt_mail_rcpt... yes
checking for curlopt_tftp_blksize... yes
checking for curlopt_ftpport... yes
checking for curlopt_quote... yes
checking for curlopt_postquote... yes
checking for curlopt_prequote... yes
checking for curlopt_dirlistonly... yes
checking for curlopt_append... yes
checking for curlopt_ftp_use_eprt... yes
checking for curlopt_ftp_use_epsv... yes
checking for curlopt_ftp_use_pret... yes
checking for curlopt_ftp_create_missing_dirs... yes
checking for curlopt_ftp_response_timeout... yes
checking for curlopt_ftp_alternative_to_user... yes
checking for curlopt_ftp_skip_pasv_ip... yes
checking for curlopt_ftpsslauth... yes
checking for curlftpauth_default... yes
checking for curlftpauth_ssl... yes
checking for curlftpauth_tls... yes
checking for curlopt_ftp_ssl_ccc... yes
checking for curlftpssl_ccc_none... yes
checking for curlftpssl_ccc_passive... yes
checking for curlftpssl_ccc_active... yes
checking for curlopt_ftp_account... yes
checking for curlopt_ftp_filemethod... yes
checking for curlftpmethod_multicwd... yes
checking for curlftpmethod_nocwd... yes
checking for curlftpmethod_singlecwd... yes
checking for curlopt_rtsp_request... yes
checking for curl_rtspreq_options... yes
checking for curl_rtspreq_describe... yes
checking for curl_rtspreq_announce... yes
checking for curl_rtspreq_setup... yes
checking for curl_rtspreq_play... yes
checking for curl_rtspreq_pause... yes
checking for curl_rtspreq_teardown... yes
checking for curl_rtspreq_get_parameter... yes
checking for curl_rtspreq_set_parameter... yes
checking for curl_rtspreq_record... yes
checking for curl_rtspreq_receive... yes
checking for curlopt_rtsp_session_id... yes
checking for curlopt_rtsp_stream_uri... yes
checking for curlopt_rtsp_transport... yes
checking for curlopt_rtsp_header... no
checking for curlopt_rtsp_client_cseq... yes
checking for curlopt_rtsp_server_cseq... yes
checking for curlopt_transfertext... yes
checking for curlopt_proxy_transfer_mode... yes
checking for curlopt_crlf... yes
checking for curlopt_range... yes
checking for curlopt_resume_from... yes
checking for curlopt_resume_from_large... yes
checking for curlopt_customrequest... yes
checking for curlopt_filetime... yes
checking for curlopt_nobody... yes
checking for curlopt_infilesize... yes
checking for curlopt_infilesize_large... yes
checking for curlopt_upload... yes
checking for curlopt_maxfilesize... yes
checking for curlopt_maxfilesize_large... yes
checking for curlopt_timecondition... yes
checking for curlopt_timevalue... yes
checking for curlopt_timeout... yes
checking for curlopt_timeout_ms... yes
checking for curlopt_low_speed_limit... yes
checking for curlopt_low_speed_time... yes
checking for curlopt_max_send_speed_large... yes
checking for curlopt_max_recv_speed_large... yes
checking for curlopt_maxconnects... yes
checking for curlopt_closepolicy... yes
checking for curlopt_fresh_connect... yes
checking for curlopt_forbid_reuse... yes
checking for curlopt_connecttimeout... yes
checking for curlopt_connecttimeout_ms... yes
checking for curlopt_ipresolve... yes
checking for curl_ipresolve_whatever... yes
checking for curl_ipresolve_v4... yes
checking for curl_ipresolve_v6... yes
checking for curlopt_connect_only... yes
checking for curlopt_use_ssl... yes
checking for curlusessl_none... yes
checking for curlusessl_try... yes
checking for curlusessl_control... yes
checking for curlusessl_all... yes
checking for curlopt_resolve... yes
checking for curlopt_sslcert... yes
checking for curlopt_sslcerttype... yes
checking for curlopt_sslkey... yes
checking for curlopt_sslkeytype... yes
checking for curlopt_keypasswd... yes
checking for curlopt_sslengine... yes
checking for curlopt_sslengine_default... yes
checking for curlopt_sslversion... yes
checking for curl_sslversion_default... yes
checking for CURL_SSLVERSION_TLSv1... yes
checking for CURL_SSLVERSION_SSLv2... yes
checking for CURL_SSLVERSION_SSLv3... yes
checking for curlopt_ssl_verifypeer... yes
checking for curlopt_cainfo... yes
checking for curlopt_issuercert... yes
checking for curlopt_capath... yes
checking for curlopt_crlfile... yes
checking for curlopt_ssl_verifyhost... yes
checking for curlopt_certinfo... yes
checking for curlopt_random_file... yes
checking for curlopt_egdsocket... yes
checking for curlopt_ssl_cipher_list... yes
checking for curlopt_ssl_sessionid_cache... yes
checking for curlopt_krblevel... yes
checking for curlopt_ssh_auth_types... yes
checking for curlopt_ssh_host_public_key_md5... yes
checking for curlopt_ssh_public_keyfile... yes
checking for curlopt_ssh_private_keyfile... yes
checking for curlopt_ssh_knownhosts... yes
checking for curlopt_ssh_keyfunction... yes
checking for curlkhstat_fine_add_to_file... yes
checking for curlkhstat_fine... yes
checking for curlkhstat_reject... yes
checking for curlkhstat_defer... yes
checking for curlopt_ssh_keydata... yes
checking for curlopt_private... yes
checking for curlopt_share... yes
checking for curlopt_new_file_perms... yes
checking for curlopt_new_directory_perms... yes
checking for curlopt_telnetoptions... yes
checking for curle_not_built_in... yes
checking for curle_obsolete... yes
checking for Ruby 1.9 Hash... no
checking for Ruby 1.9 st.h... yes
checking for curl_easy_escape... yes
checking for rb_thread_blocking_region()... no
creating curb_config.h
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling curb.c
compiling curb_easy.c
curb_easy.c:160:9: warning: unused variable 'procret' [-Wunused-variable]
  VALUE procret;
        ^
1 warning generated.
compiling curb_errors.c
curb_errors.c:462:33: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
  rb_raise(rb_ary_entry(obj,0), RSTRING_PTR(rb_ary_entry(obj,1)));
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jon/.rbenv/versions/2.2.3/include/ruby-2.2.0/ruby/ruby.h:866:5: note: expanded from macro 'RSTRING_PTR'
    (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
curb_errors.c:512:33: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
  rb_raise(rb_ary_entry(obj,0), RSTRING_PTR(rb_ary_entry(obj,1)));
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jon/.rbenv/versions/2.2.3/include/ruby-2.2.0/ruby/ruby.h:866:5: note: expanded from macro 'RSTRING_PTR'
    (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
compiling curb_multi.c
curb_multi.c:67:79: warning: implicit declaration of function 'RHASH' is invalid in C99 [-Wimplicit-function-declaration]
  if (rbcm && !rbcm->requests == Qnil && rb_type(rbcm->requests) == T_HASH && RHASH_LEN(rbcm->requests) > 0) {
                                                                              ^
./curb.h:44:27: note: expanded from macro 'RHASH_LEN'
  #define RHASH_LEN(hash) RHASH(hash)->tbl->num_entries
                          ^
curb_multi.c:67:79: error: member reference type 'int' is not a pointer
  if (rbcm && !rbcm->requests == Qnil && rb_type(rbcm->requests) == T_HASH && RHASH_LEN(rbcm->requests) > 0) {
                                                                              ^~~~~~~~~~~~~~~~~~~~~~~~~
./curb.h:44:40: note: expanded from macro 'RHASH_LEN'
  #define RHASH_LEN(hash) RHASH(hash)->tbl->num_entries
                          ~~~~~~~~~~~  ^
curb_multi.c:559:12: warning: implicit declaration of function 'rb_thread_select' is invalid in C99 [-Wimplicit-function-declaration]
      rc = rb_thread_select(maxfd+1, &fdread, &fdwrite, &fdexcep, &tv);
           ^
2 warnings and 1 error generated.
make: *** [curb_multi.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/jon/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/curb-0.7.18 for inspection.
Results logged to /Users/jon/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/curb-0.7.18/gem_make.out
@nicobrenner
Copy link

Hey @jon-ga, thank you for reporting the issue, having the same problem here. Did the newer version of curb work for you?

@ritikesh
Copy link

Hey, I'm facing the same issue. did you have any luck with this? if so, what fixed it for you?

@nicobrenner
Copy link

Hi @ritikesh, it never worked for me. Ended up just writing some ruby code to post info directly through the API. Here's a snippet:

def post_to_hubspot(firstname, lastname, phone, email, company, source, employees)
    properties = { properties: [ { property: 'email', value: email },
                                 { property: 'firstname', value: firstname },
                                 { property: 'lastname', value: lastname },
                                 { property: 'company', value: company },
                                 { property: 'employees', value: employees },
                                 { property: 'phone', value: phone },
                                 { property: 'source', value: source } ] }

    url = "https://api.hubapi.com/contacts/v1/contact/?" \
          "access_token=#{access_token}"

    uri = URI.parse(url)
    request = Net::HTTP::Post.new(uri)
    request.content_type = "application/json"
    request.body = JSON.dump(properties)

    response = Net::HTTP.start(uri.hostname,
                               uri.port,
                               use_ssl: uri.scheme == "https") do |http|
      http.request(request)
    end

    response
  end

@ritikesh
Copy link

ah, very well. Thanks! :)

@jon-ga
Copy link
Author

jon-ga commented Jun 28, 2017

I haven't worked with this library since I filed this issue. Given that the last commit was on Mar 10, 2014, there is a significant amount of bit rot. You could try upgrading the gems in Gemfile.lock (the newest issue is that the older version of the JSON gem is no longer installable), or you could create your own minimal integration as @nicobrenner posted above. The latter is your best bet, in my opinion.

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

3 participants