没有这样的文件加载 – rubygems(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议这样做:
- 删除通过端口(百胜或任何包pipe理器)安装的ruby版本。
- 删除操作系统附带的ruby版本(手动核心rm)。
- 从不同前缀的端口安装ruby版本(
/usr
而不是/usr/local
) - 重新安装
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
为我解决了这个问题。