hodgesmr
hodgesmr

Reputation: 2785

Using Ruby Gems

I'm brand new to ruby. I've written a little script, and at the top I have the following:

require 'rubygems'
require 'net/http'
require 'json'
require 'curb'

But when I attempt to run the script, I get the following:

C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot loa
d such file -- curb (LoadError)
        from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require
'
        from rImDrop.rb:4:in `<main>'

Everything I've found thus far has indicated that require 'rubygems' would fix this issue, but apparently not in my case. Would the next guess be that I have Gems installed incorrectly?

Edit: I should point out that I'm on Windows 7...

When I run gem install curb I get:

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing curb:
        ERROR: Failed to build gem native extension.

        C:/Ruby193/bin/ruby.exe extconf.rb
checking for curl-config... no
checking for main() in -lcurl... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=C:/Ruby193/bin/ruby
        --with-curl-dir
        --without-curl-dir
        --with-curl-include
        --without-curl-include=${curl-dir}/include
        --with-curl-lib
        --without-curl-lib=${curl-dir}/lib
        --with-curllib
        --without-curllib
extconf.rb:23:in `<main>':   Can't find libcurl or curl/curl.h (RuntimeError)

  Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
  options to extconf.


Gem files will remain installed in C:/Ruby193/lib/ruby/gems/1.9.1/gems/curb-0.8.
0 for inspection.
Results logged to C:/Ruby193/lib/ruby/gems/1.9.1/gems/curb-0.8.0/ext/gem_make.ou
t

Upvotes: 0

Views: 5130

Answers (5)

sethi
sethi

Reputation: 1889

Some libraries in Ruby are not pure ruby implementations and depend on system executables and binary files. Curb is one such.

Install curl on your system

e.g. in redhat

yum install curl-devel

Upvotes: 0

jokham
jokham

Reputation: 265

I was getting the same error on ubuntu and

gem install curb

also didn't work. This worked though:

sudo apt-get install libcurl3-dev

Upvotes: 9

Yoann Le Touche
Yoann Le Touche

Reputation: 1300

The answer lies in those two lines :

checking for curl-config... no
checking for main() in -lcurl... no

It means that the system searched for the curl library but didn't found it.

You need the curl library and its dev files (source code) for the gem to compile.

Upvotes: 0

knut
knut

Reputation: 27855

Can you try

gem list

You get a list of installed gems. If curb is missing, it is not installed.

Then you can use (if you are online):

gem install curb

to install it. The gem will be loaded and installed from internet (if there are dependecies, you are asked, if they should be installed.).

Upvotes: 0

bdon
bdon

Reputation: 2088

Have you installed the gem via "gem install curb" in the shell? The first two, Net::HTTP and JSON, are part of the Ruby 1.9 standard library, so they don't actually use RubyGems at all.

Upvotes: 1

Related Questions