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

时间:2010-05-24 11:10:51

标签: ruby-on-rails ruby rubygems

我最近在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

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

[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文件有关。让我知道我需要在这里改变什么。如果我还有其他变化,请告诉我。

13 个答案:

答案 0 :(得分:102)

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

$ which -a ruby

对评论进行了更新:

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

我所做的只是核实一次安装红宝石,并通过端口留下一个可管理的。我建议这样做:

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

答案 1 :(得分: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.

完成捆绑后,安装成功。

答案 2 :(得分: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

系统使用的默认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]

执行此操作后,我的“无此文件”问题消失了,我的脚本开始工作。

答案 3 :(得分:13)

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

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

答案 4 :(得分:12)

尝试使用以下方式启动项目:

./script/server
如果您使用ruby 1.9.2(来自strange inability to require config/boot after upgrading to ruby 1.9.2

,请使用

而不是script/server

答案 5 :(得分:11)

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

find / -name "rubygems" -print

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

export RUBYLIB=/path/to/parent

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

答案 6 :(得分:6)

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

ruby test.rb

ruby -rubygems test.rb

似乎工作。

答案 7 :(得分:6)

我遇到了类似的问题,并通过设置RUBYLIB env。

解决了这个问题

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

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

答案 8 :(得分:1)

如果你安装了几个ruby,只需删除其中一个就足够了,在MacosX上安装额外的端口,删除ports ruby​​安装:

sudo port -f uninstall ruby

答案 9 :(得分:1)

我也遇到过这个问题。 我的解决方案是删除文件Gemfile.lock,然后再次安装gems:bundle install

答案 10 :(得分:1)

gem install bundler

为我解决了这个问题。

答案 11 :(得分:1)

这是谷歌自动修正“ubygems”到“rubygems”后谷歌搜索Peekable的第一个答案。事实证明这是Ruby 2.4和2.5之间的有意改变(Bug #14322)。检测用户gems目录而不考虑ruby版本的脚本很可能会失败。

Ruby 2.4

export default class A extends Component {
constructor(props) {
    super(props)
    this.state = {
        title: ["ABC","DEF","GHI"]
    };
}
render(){return(<Text>{this.state.title[1]}</Text>)}
module.exports = A;

Ruby 2.5

import {A} from "./A"  
export default class B extends Component {
render(){return(<Text>{A.state.title[1]?? // not sure about this part 
 }</Text>)}
}

答案 12 :(得分:0)

我使用rbenv + passenger + nginx也遇到了同样的问题。我的解决方案只是将这两行代码添加到你的nginx配置中:

passenger_default_user root;
passenger_default_group root;

详细答案如下:https://stackoverflow.com/a/15777738/445908