I'm trying to run an application that uses rest-client version 2.0.1, however when I run the application I'm getting
/opt/whitewidow/lib/imports/constants_and_requires.rb:6:in require': cannot load such file -- rest-client (LoadError) from /opt/whitewidow/lib/imports/constants_and_requires.rb:6:in<top (required)>'
from whitewidow.rb:2:in require_relative' from whitewidow.rb:2:in
What I've tried to do is edit the code to use restclient instead of rest-client but that just throws the same issue, I tried install a version lower with gem install rest-client -v 2.0 I get the same error.
Now here's the weird part, the application runs on Windows 7, but not on a Debian distro, is there a trick to running rest-client on a Linux distro? here's all the requirements:
require 'rubygems'
require 'bundler/setup'
require 'mechanize'
require 'nokogiri'
require 'rest-client'
require 'timeout'
require 'uri'
require 'fileutils'
require 'yaml'
require 'date'
require 'optparse'
require 'tempfile'
require 'socket'
require 'net/http'
require 'ipaddr'
require 'csv'
If you bundled the application on windows it will not execute properly. This is because it compiles with the windows binaries.
Try deleting your Gemfile.lock and rebundling.
Related
When I use
require 'bundler/setup'
i get Bundler.with_clean_env is not supported.
But when I change this to
require 'bundler'
It supports Bundler.with_clean_env. The confusion that rises here is what is the difference between requiring 'bundler' and 'bundler/setup'?
When referring to gems, require 'foo' would require the foo.rb file that is located in the gem's lib directory. That file usually has the same name as the gem and is responsible for requiring all other necessary files for the gem to function.
When you do require 'foo/bar', you search for lib/foo/bar.rb. In other words, you require only a specific file from that gem and not the whole thing.
The bundler/setup is responsible for loading all gems described in your Gemfile. Bundler.with_clean_env is a completely different functionality, defined in the gem's main file.
Gemfiles can include groups like :test or :development.
require 'bundler/setup' includes all groups from your Gemfile.
require 'bundler' on the other hand lets you specify (via Bundler.setup) which groups to include.
From the documentation:
Configure the load path so all dependencies in your Gemfile can be required
require 'rubygems'
require 'bundler/setup'
require 'nokogiri'
Only add gems from specified groups to the load path. If you want the gems in the default group, make sure to include it
require 'rubygems'
require 'bundler'
Bundler.setup(:default, :ci)
require 'nokogiri'
I have a ruby script that requires 3 gems to work. My script starts as follows:
#!/usr/bin/env ruby
require 'httparty'
require 'imgkit'
require 'twitter'
Now, interestingly, the above code works, but only if I require httparty first or second. If I require it as the third dependency, I get the following:
'require': cannot load such file -- httparty (LoadError)
I'd love to learn why this is happening, so I can better understand how ruby handles gem dependencies. Many thanks!
Edit: I am using bundler. This is my Gemfile:
source 'https://rubygems.org'
ruby '2.2.2'
gem 'wkhtmltoimage-binary'
gem 'imgkit'
gem 'twitter'
gem 'rspec'
gem 'httparty'
Following tadman's advice, adding require 'bundler/setup' solved the problem. More in the docs. Thanks!
Hi so i stumbled upon a new way to require my ruby gems in my sinatra app using bundler and i was wondering if this is how i should do it:
My gem file looks like:
source 'https://rubygems.org'
gem 'sinatra'
gem 'thin'
gem 'haml'
My config.ru file looks like:
require 'rubygems'
require 'bundler'
Bundler.require
require './web'
run Sinatra::Application
My web.rb file looks like:
class MyApp
before do
cache_control :public, :max_age => 60
end
not_found do
haml :not_found
end
get '/' do
haml :index
end
end
Get rid of these lines from your config.ru file:
require 'rubygems'
require 'bundler'
Bundler.require
Just make sure you run
bundle install
from the terminal to install your gems before starting the application.
I have successfully installed:
Ruby 1.8.7-p334
Rubygems 1.7.2
rake 0.9.0
qtruby4 2.1.0 mswin32
Now the following block of code
require 'rubygems'
require 'Qt4'
gives me an error:
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems.rb:926:in report_activate_error': RubyGem version error: qtruby4(2.1.0 not >= 0) (Gem::LoadError)
from C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems.rb:244:inactivate_dep'
from C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems.rb:236:in activate'
from C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems.rb:213:intry_activate'
from C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:56:in `require'
from C:/Users/nick/Documents/NetBeansProjects/RubyApplication2/lib/main.rb:4
Everything good when requiring just 'rubygems'. My OS is Windows 7.
Make sure you require correct gem name
require 'Qt4' seems like little different as almost all the ruby gem names are in simple letters
isnt your gem name 'qtruby4' by any chance, if so try
require 'rubygems'
require 'qtruby4'
HTH
sameera
I've installed the Curb and Curb-fu gem and libcurl on my Ubuntu box.
If I go into irb and run the following
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'curb'
=> true
irb(main):003:0> require 'json'
=> true
irb(main):004:0> require 'curb-fu'
=> true
irb(main):005:0>
So it seems that I have access to all the gems.
But I've created a very simple ruby app that's giving me an error:
#!/usr/bin/ruby
require 'rubygems'
require 'curb'
require 'json'
require 'curb-fu'
response = CurbFu.get('http://slashdot.org')
puts response.body
I get the following error back.
/usr/lib/ruby/gems/1.8/gems/curb-fu-0.4.4/lib/curb-fu/authentication.rb:3: uninitialized constant CurbFu::Authentication::Curl (NameError)
I have a feeling it's something to do with libcurl and have tried several different versions but still no joy.
Can anyone offer any assistance?
Cheers
Togs
I managed to get it to work.
I uninstalled both the curb and curb-fu gem and re-installed them.
I now have curb-fu working.
For future reference for anyone having problems with this.. these are the libcurl bits I installed.
libcurl3
libcurl3-gnutls
libcurl4-openssl-dev