没有这样的文件加载 – ruby​​gems(LoadError)

我最近在fedora 12中安装了rails。我也是linux新手。 一切工作正常在Windows 7上。但我在Linux面临很多问题。 请帮助!

我已经安装了所有基本知识来使基本脚本/服务器正常运行。 当我尝试脚本/服务器时,我从boot.rbpopup这个错误。 我想在这里提供一些细节:

rails,ruby和gem被安装的目录,

[vineeth@localhost my_app]$ which ruby /usr/local/bin/ruby [vineeth@localhost my_app]$ which rails /usr/bin/rails [vineeth@localhost my_app]$ which gem /usr/bin/gem 

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

 [vineeth@localhost 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 

PATH文件看起来像这样

 [vineeth@localhost 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" 

我想这是关于PATH文件。 让我知道我需要在这里改变。 如果还有其他的改变,请告诉我。

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

 $ which -a ruby 

更新关于评论:

核武一个版本,只留下一个。 我有两个版本在寻找gem不同位置的同样的问题。 让我发疯了几个星期。 在这里放一个赏金给我同样的答案,我给你。

我所做的只是一个ruby的安装,并通过端口留下一个可pipe理的。 我build议这样做:

  1. 删除通过端口(百胜或任何包pipe理器)安装的ruby版本。
  2. 删除操作系统附带的ruby版本(手动核心rm)。
  3. 从不同前缀的端口安装ruby版本( /usr而不是/usr/local
  4. 重新安装rubygems

由于安装了多个ruby副本,我在Ubuntu上遇到了类似的问题。 (1.8和1.9.1)不幸的是我需要他们两个。 解决scheme是使用:

 $ 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. 

在这之后,捆绑安装成功。

好吧,我是一个Ruby noob,但是我确实得到了这个修正与这里的答案略有不同,所以希望这可以帮助其他人(tl; dr:我使用RVM将系统Ruby版本切换到rubygems预期的相同版本)。

首先,列出Eimantas提到的所有ruby是一个很好的起点:

 > 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使用的版本是由RVMpipe理的1.9.2版本:

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

所以这绝对是问题。 我不主动使用Ruby自己(这只是我试图运行的构build系统脚本的依赖项),所以我不关心哪个版本是为其他目的而激活的。 由于rubygems预计已经由RVMpipe理的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] 

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

尝试启动项目:

 ./script/server 

而不是script/server如果你使用ruby1.9.2(从奇怪的无法升级到ruby1.9.2后需要config / boot )

我只想补充说,在我的情况下rubygems没有安装。

运行sudo apt-get install rubygems解决了这个问题!

如果有其他人在使用这个问题:我能够通过find我想要使用的难以捉摸的“rubygems”文件夹并将其添加到我的$ RUBYLIB环境variables来修复我的问题。

 find / -name "rubygems" -print 

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

 export RUBYLIB=/path/to/parent 

现在,如果你运行gem,它应该select正确的库目录,然后closures并运行。

我有一个类似的问题,只是运行一个简单的ruby脚本,只需要我想要的gem…得到了错误信息。 当我把这个咒语改为:

 ruby test.rb 

 ruby -rubygems test.rb 

似乎工作。

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

在我的环境中,我使用了这个:

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

如果你已经安装了几个ruby,那么只需要移除其中的一个就可以了,在MacosX上用额外的端口安装,用下面的命令移除ruby安装的端口:

 sudo port -f uninstall ruby 

我也遇到了使用rbenv +乘客+ nginx相同的问题。 我的解决scheme是简单地将这两行代码添加到您的nginxconfiguration:

 passenger_default_user root; passenger_default_group root; 

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

我也有这个问题。 我的解决scheme是删除文件Gemfile.lock,并再次安装gem:捆绑安装

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

 gem install bundler 

为我解决了这个问题。