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

Vin*_*han 62 ruby rubygems ruby-on-rails

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

我已经安装了所有必需品,以使基本脚本/服务器启动并运行.我在尝试脚本/服务器时弹出boot.rb时出现此错误.我想在此提供的一些细节:

安装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
Run Code Online (Sandbox Code Playgroud)

当我运行脚本/服务器时,这就是错误.

[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
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

我想这与PATH文件有关.让我知道我需要在这里改变什么.如果我还有其他变化,请告诉我.

Eim*_*tas 103

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

$ which -a ruby
Run Code Online (Sandbox Code Playgroud)

更新了评论:

核弹一个版本,只留一个版本.我有两个版本查看宝石的不同位置有同样的问题.让我疯了几个星期.在这里拿到赏金给我同样的答案我给你.

我所做的就是核对一个红宝石的安装并通过端口留下一个可管理的.我建议这样做:

  1. 删除通过端口安装的ruby版本(yum或任何包管理器).
  2. 删除OS附带的ruby版本(手动硬核rm).
  3. 从具有不同前缀(/usr而不是/usr/local)的端口安装ruby版本
  4. 重新安装 rubygems

  • **谢谢,你的猜测是对的.**`[vineeth @ localhost~] $ -a ruby​​/usr/local/bin/ruby​​/usr/local/bin/ruby​​/usr/bin/ruby​​`**做什么我现在做的?** (13认同)
  • 好的预感,这也是我的问题.然而`哪一个 - 红宝石'没有透露它.当我键入ruby和tab-tab时,它会列出`ruby,ruby1.8和ruby1.9.1`. (4认同)
  • 我正在使用rvm,我切换回我的系统ruby,'rvm use system' (3认同)

小智 25

由于安装了多个ruby副本,我在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.
Run Code Online (Sandbox Code Playgroud)

做完捆绑后安装成功了.


Bri*_*kau 18

好吧,我是一个Ruby noob,但我确实得到的解决方法与这里的答案略有不同,所以希望这有助于其他人(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
Run Code Online (Sandbox Code Playgroud)

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

> ruby -v
ruby 1.8.7 (2010-06-23 patchlevel 299) [i686-darwin10]
Run Code Online (Sandbox Code Playgroud)

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

> gem env | grep 'RUBY EXECUTABLE'
  - RUBY EXECUTABLE: /Users/Brian/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
Run Code Online (Sandbox Code Playgroud)

所以这绝对是个问题.我自己并没有主动使用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]
Run Code Online (Sandbox Code Playgroud)

在这样做后,我的"没有这样的文件"问题消失了,我的脚本开始工作了.


mig*_*ain 13

我想补充一点,在我的情况下rubygems没有安装.

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


ohh*_*hho 12

尝试启动项目:

./script/server
Run Code Online (Sandbox Code Playgroud)

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


And*_*ick 11

如果其他人正在搜索这个问题:我能够通过找到我想要使用的难以捉摸的"rubygems"文件夹并将其添加到我的$ RUBYLIB环境变量来修复我的问题.

find / -name "rubygems" -print
Run Code Online (Sandbox Code Playgroud)

找到后,将父目录添加到您的环境中.在bash中,像这样:

export RUBYLIB=/path/to/parent
Run Code Online (Sandbox Code Playgroud)

现在,如果你运行gem,它应该选择正确的库目录,然后你就可以运行了.

  • 这可能比核红宝石更好.) (3认同)

ftr*_*ers 6

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

ruby test.rb
Run Code Online (Sandbox Code Playgroud)

ruby -rubygems test.rb
Run Code Online (Sandbox Code Playgroud)

似乎工作.


Rob*_*tos 6

我遇到了类似的问题并通过设置RUBYLIB env解决了这个问题.

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

export RUBYLIB=$ruby_dir/lib/ruby/1.9.1/:$ruby_dir/lib/ruby/1.9.1/i686-linux/:$RUBYLIB
Run Code Online (Sandbox Code Playgroud)