问题 我在“宝石列表”中看到宝石但是“没有这样的文件加载”


我在Ubuntu10上

sudo apt-get install ruby1.9.1-full

然后下载rubygem 1.3.7的源代码并安装它

sudo ruby setup.rb

然后,例如,安装sinatra

sudo gem install sinatra

最后打开irb并键入

require "rubygems"
require "sinatra"

并得到错误

LoadError: no such file to load -- sinatra
    from (irb):2:in `require'
    from (irb):2
    from /usr/bin/irb:12:in `<main>'

2727
2018-05-31 18:02


起源

你可以说得更详细点吗?在什么情况下,你能引用错误吗?尝试重新安装并传递详细信息以查看发生了什么。 - Jay
我正在使用的教科书中强调了这个问题(beta.saasbook.info)。准备好尽快获得“热门问题”徽章。 - J.Hendrix
阅读工程持久软件(SaaS书)后来到这里 - coder9
@ J.Hendrix:出于同样的原因。也许 现在 就是这个问题的时候 真 起飞。 - Dmitri


答案:


我有这个问题。问题是宝石和红宝石不同意宝石的居住地。比较这些:

ruby -e "puts Gem.path"

gem env

gem which sinatra

如果你喜欢我的设置,你会发现gem env的路径中有一个不在Gem.path中的条目,而这正是sinatra声称的那个。就我而言,我不得不补充一下

export GEM_HOME=/usr/lib/ruby/gems/1.9.1

到我的.profile。然后大家都很高兴。


4
2018-05-31 19:10





执行

sudo gem install sinatra --verbose

并记下安装gem的路径。

然后在irb中尝试这个

puts $LOAD_PATH

并确保gem安装在其中一个目录中 $LOAD_PATH

理想情况下,开始使用 http://rvm.beginrescueend.com/


3
2018-05-31 19:00



+1我认为在加载路径中调整目录集更容易(如我的回答),但显然这也会起作用。
rvm困惑了我 - Igor Alekseev


当我忘记时,我经常遇到这个错误:

require 'rubygems'

但是,如果您提供了实际的代码示例,那么您将需要什么样的gem,以及如果这不能解决问题,那么您正在使用的Ruby版本会很有用。


2
2018-05-31 18:07



从1.9开始,你不需要rubygems
@Isaac Cambron - 这是真的,这就是我要求更多细节的原因。 OP已经提供了它们。答案显然与此特定用户无关,但我会留下参考:) - Matchu


这是在此之前的很多次。问题是你可能有两个版本的ruby。一个是安装宝石,另一个是试图使用它。在终端中执行此操作:

$ which -a ruby

或这个:

$ which -a gem

看看你是否安装了多个版本的ruby / gem。如果是这样 - 删除一个版本(通过 $ rm 或系统的包管理器)。


1
2018-05-31 18:31



我有一颗红宝石和一颗宝石:) - Igor Alekseev


我使用ruby gems 1.8.7进行项目。我得到了同样的错误。使用该行 require 'rubygems'。它必须始终是第一个require语句,否则您可能会收到错误。在我的代码中,我有

require 'watir'
require 'rubygems'
# more code

我得到了错误 - 在`require':没有这样的文件加载 - watir(LoadError)。 当我首先放入rubygems时,错误消失了,一切正常。我不知道 为什么会这样。

顺便说一句,我试过user24359的答案,它没有帮助我。

C:\code>ruby -e "puts Gem.path"
-e:1: uninitialized constant Gem (NameError)

0
2018-01-14 07:59