2010-05-24 54 views
60

我最近在fedora 12中安装了rails。我也是linux新手。一切工作正常在Windows 7上。但我在Linux中面临很多问题。请帮助!没有这样的文件加载 - ruby​​gems(LoadError)

我已经安装了我所知道的所有基本知识来启动并运行基本脚本/服务器。当我尝试脚本/服务器时,我从boot.rb弹出了这个错误。一些细节,我想在这里给:

如果装上轨,红宝石和宝石的目录,

[[email protected] my_app]$ which ruby 
/usr/local/bin/ruby 

[[email protected] my_app]$ which rails 
/usr/bin/rails 

[[email protected] my_app]$ which gem 
/usr/bin/gem 

当我运行脚本/服务器,这是错误。

[[email protected] my_app]$ script/server 
./script/../config/boot.rb:9:in `require': no such file to load -- rubygems (LoadError) 
from ./script/../config/boot.rb:9 
from script/server:2:in `require' 
from script/server:2 

和路径文件看起来像这样

[[email protected] my_app]$ cat ~/.bash_profile 
# .bash_profile 

# Get the aliases and functions 
if [ -f ~/.bashrc ]; then 
. ~/.bashrc 
fi 

# User specific environment and startup programs 

PATH=$PATH:$HOME/bin 

export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin/ruby:$PATH" 

我想这是值得做的路径文件。让我知道我需要在这里改变。如果还有其他更改,请告诉我。

回答

101

我有一个预感,你有两个红宝石版本。请粘贴以下命令的输出:

$ which -a ruby 

更新有关的评论:

核弹一个版本,只留下一个。我有两个版本在寻找宝石的不同位置时遇到同样的问题。让我疯了好几个星期。在这里付出赏金,让我得到同样的答案,我给你。

我所做的只是一次红宝石安装,并通过端口留下一个可管理的。我建议这样做:通过端口(YUM或任何软件包管理器)安装

  1. 删除红宝石版本。
  2. 删除操作系统附带的ruby版本(手动核心rm)。
  3. 安装从不同的前缀端口红宝石版本(的/usr代替/usr/local
  4. 重新安装rubygems
+13

**谢谢你,你的猜测是正确的。** '[比涅斯@本地〜] $其中-a红宝石在/ usr /本地/ bin/ruby​​ /usr/local/bin/ruby/usr/bin/ruby' **现在我该怎么办?** – Vineeth 2010-05-24 15:11:17

+1

另外值得一提的是,如果您尝试在rails 3.x上运行脚本/服务器你会得到这个错误,而是使用'rails server' – yekta 2011-05-20 13:20:25

+4

好的预感,这也是我的问题。 但是'哪一个红宝石'没有透露它。当我键入ruby和tab-tab时,它列出了'ruby,ruby1.8和ruby1.9.1'。 – uthomas 2013-11-28 22:16:54

1

如果你安装了几个红宝石,这可能足以只是额外删除其中的一个,MacOSX上端口安装,拆卸端口Ruby安装有:

sudo port -f uninstall ruby 
+0

这帮了我。我安装了RVM,碰巧也有通过macports安装的ruby。我卸载了macports,rvm完成了其余的工作。谢谢! – 2011-12-25 19:22:42

11

万一别人是谷歌搜索这个问题:我能够通过寻找难以捉摸的“RubyGems的”修复我的文件夹我想使用它并将其添加到我的$ RUBYLIB环境变量中。

find/-name "rubygems" -print 

一旦找到它,请将父目录添加到您的环境中。在bash中,像这样:

export RUBYLIB=/path/to/parent 

现在,如果你运行的宝石,它应该拿起合适的库目录,你是关闭和运行。

+3

这可能比nuking红宝石更好。) – Eimantas 2011-08-30 17:07:41

6

我也有类似的问题,只需运行一个简单的Ruby脚本,只是需要我想要的宝石...有错误信息。当我改变了咒语:

ruby test.rb 

ruby -rubygems test.rb 

似乎工作。

+0

为我工作,为MacOS,红宝石1.8.7(2012-02-08 patchlevel 358)[universal-darwin10.0] – 2013-06-07 13:34:38

5

我有一个类似的问题,并通过设置RUBYLIB env解决。

在我的环境我用这个:

export RUBYLIB=$ruby_dir/lib/ruby/1.9.1/:$ruby_dir/lib/ruby/1.9.1/i686-linux/:$RUBYLIB 
+0

这对我来说(调整路径)当试图在chroot环境中使用红宝石时。 – gabrtv 2013-04-16 14:24:42

+0

工作在centos上? – user151968 2015-04-15 07:31:45

24

我对Ubuntu的一个类似的问题,由于无需安装红宝石的多个副本。 (1.8和1.9.1)不幸的是我需要他们两个。解决方案是使用:

$ sudo update-alternatives --config ruby 
There are 2 choices for the alternative ruby (providing /usr/bin/ruby). 

    Selection Path    Priority Status 
------------------------------------------------------------ 
* 0   /usr/bin/ruby1.8  50  auto mode 
    1   /usr/bin/ruby1.8  50  manual mode 
    2   /usr/bin/ruby1.9.1 10  manual mode 

Press enter to keep the current choice[*], or type selection number: 2 
update-alternatives: using /usr/bin/ruby1.9.1 to provide /usr/bin/ruby (ruby) in manual mode. 

在这样做后,捆绑安装成功。

+0

这个适用于我的Ubuntu 12.04 – 2013-03-16 02:08:51

+1

什么适用于Centos 6.5? – user151968 2015-04-15 07:26:08

0

我也遇到了使用rbenv + passenger + nginx的同样的问题。我的解决方法就是添加这些2行代码到你的nginx的配置:

passenger_default_user root; 
passenger_default_group root; 

详细的答案就在这里:https://stackoverflow.com/a/15777738/445908

18

OK,我是一个Ruby的小白,但我没有得到这个稍有不同固定这里的答案,所以希望这可以帮助别人(tl; dr:我使用RVM将系统Ruby版本切换到rubygems预期的相同版本)。

首先,列出所有红宝石由Eimantas提到的是一个伟大的起点:

> which -a ruby 
/opt/local/bin/ruby 
/Users/Brian/.rvm/rubies/ruby-1.9.2-p290/bin/ruby 
/Users/Brian/.rvm/bin/ruby 
/usr/bin/ruby 
/opt/local/bin/ruby 

默认的Ruby实例中由系统使用似乎是1.8.7:

> ruby -v 
ruby 1.8.7 (2010-06-23 patchlevel 299) [i686-darwin10] 

而Rubygems使用的版本是由RVM管理的1.9.2版本:

> gem env | grep 'RUBY EXECUTABLE' 
    - RUBY EXECUTABLE: /Users/Brian/.rvm/rubies/ruby-1.9.2-p290/bin/ruby 

所以这绝对是问题。我不会自己积极使用Ruby(这只是我试图运行的构建系统脚本的依赖关系),所以我不在乎哪个版本在其他用途​​中处于活动状态。由于RubyGems的预期已经由RVM管理的1.9.2,我只是用RVM将系统切换到使用1.9.2版本的默认:

> rvm use 1.9.2 
Using /Users/Brian/.rvm/gems/ruby-1.9.2-p290 

> ruby -v 
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.3.0] 

这样做,我的“没有这样的文件”的问题后,走了,我的脚本开始工作。

1

我也有这个问题。 我的解决方案是删除文件Gemfile。锁,并再次安装宝石:捆绑安装

+0

伙计,这不是解决方案,这是一个伎俩。我的意思是不好的把戏 – ImranNaqvi 2015-11-05 11:00:17

+0

@ImranNaqvi请解释并提供参考资料来源为什么这是一个坏的把戏? – datnt 2016-03-04 02:12:55

13

我只想补充一点,在我的情况下rubygems未安装。

跑步sudo apt-get install rubygems解决了这个问题!

+0

谢谢!我无法相信这是我迄今为止尝试的所有复杂步骤中的解决方案。 :) – jredd 2015-07-26 05:36:53

0

简单地运行/bin/bash --login对我来说很奇怪。无法解释它。

0
gem install bundler 

解决了我的问题。

0

这是Google自动将“ubygems”自动更改为“rubygems”后Google搜索'require': cannot load such file -- ubygems (LoadError)时的第一个答案。原来这是Ruby 2.4和2.5之间的故意改变(Bug #14322)。在不考虑ruby版本的情况下检测用户gems目录的脚本很可能会失败。

红宝石2.4

ruby -rubygems -e 'puts Gem.user_dir' 

红宝石2.5

ruby -rrubygems -e 'puts Gem.user_dir' 
相关问题