在[]中找不到rails(> = 0)(Gem :: LoadError)

50
安装完rvm之后,更新了.gmrc文件,更新了rubygems并运行了gem install rails -v ">=3.1.0rc"命令,现在我的环境似乎一团糟:
$ rails -v
/usr/local/lib/site_ruby/1.8/rubygems/dependency.rb:247:in `to_specs': Could not find rails (>= 0) amongst [] (Gem::LoadError)
    from /usr/local/lib/site_ruby/1.8/rubygems/dependency.rb:256:in `to_spec'
    from /usr/local/lib/site_ruby/1.8/rubygems.rb:1182:in `gem'
    from /var/lib/gems/1.8/bin/rails:18

myhome@myhome-mini:~$ gem env

RubyGems Environment:
  - RUBYGEMS VERSION: 1.6.2
  - RUBY VERSION: 1.9.2 (2011-02-18 patchlevel 180) [i686-linux]
  - INSTALLATION DIRECTORY: /home/myhome/gems
  - RUBY EXECUTABLE: /home/myhome/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
  - EXECUTABLE DIRECTORY: /home/myhome/gems/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/myhome/gems
     - /usr/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gemhome" => "/home/myhome/gems"
     - "gempath" => ["/home/myhome/gems", "/usr/lib/ruby/gems/1.8"]
  - REMOTE SOURCES:
     - http://rubygems.org/

我遇到了完全相同的问题,但是是与bundler gem有关。 - Mark
抱歉,我重新安装了Ubuntu系统,因此无法对提出的任何解决方案进行评论。不过实际上,我尝试了sudo的方法,但没有成功,所以我会接受删除Ruby的建议,谢谢。 - rigyt
7个回答

85

我曾经遇到过类似的问题。不确定这是否有帮助,但您可以尝试使用 rvmsudo gem install [gemname] 安装gems,而不是仅仅使用 gem install [gemname] 或者 sudo gem install [gemname]

我稍微解释一下,因为这个回答被赞了:
基本上这是一个路径问题。如果您通过使用 gem install 设置gems,它们可能会在另一个目录中(例如/usr/local/),与通过bundler设置的gems不同(在那里您可以使用 --path 覆盖它)。使用 sudo 也可能会将它们安装到另一个目录中,因为 sudo 启动了一个具有不同环境的子shell。这就是为什么需要使用 rvmsudo

如果您想查看差异,请比较直接回显时的 $PATH$GEM_HOME$GEM_PATH$BUNDLE_PATH,以及使用 sudorvmsudo 时的情况。


2
这个注释对于在travis-ci.org上安装gems特别有用。 - badsyntax
我在创建自己的gem并进行开发时遇到了问题。在主应用程序中,我使用路径引用文件夹。当我在应用程序目录之外,想要执行类似于rails -v这样的操作时,会出现错误,说找不到我正在开发的自定义gem。有任何潜在修复建议吗? - Spasm

33

我不得不运行 sudo gem install bundler 来使它再次正常工作。


11
有时候,Ruby生态系统让我感到非常痛苦和沮丧。 - iphone007
如果我已经安装了Bundler,但它仍然无法工作怎么办?(这就是我的情况) - ViniciusPires

6

我遇到了类似的问题,可能是rvm的兼容性问题。我通过更新rvm到最新版本来解决这个问题:

curl -L https://get.rvm.io | bash -s stable --ruby

然后您应该重新加载rvm或者打开新的终端窗口。 接着我重新安装了bundler 'gem install bundler' 并像平常一样运行了 'bundle install'。


3
如果你已经安装了rvm并且有一个更新的版本,那么使用以下命令可以实现同样的功能:rvm get stable --auto - jmervine

5
rvm rubygems current

这个对我起了作用。

1

首先卸载 Ruby,然后执行以下操作:

sudo apt-get install build-essential libssl-dev libreadline5 libreadline5-dev zlib1g zlib1g-dev

安装所有必需的库,然后就可以安装Ruby和Rails了

rvm install 1.9.3
rvm --default use 1.9.3
rvm gem install rails

0

我知道这是一个非常老的问题,但我最近决定在我之前设置的服务器上移动到RVM,并遇到了同样的问题,即gem被安装在错误的位置,导致一切都混乱了。

经过几个小时在SO上爬行,我终于发现,在我的根文件夹中的.gemrc文件中,我之前设置了gemhome:和gempath:变量,它们正在干扰整个系统。

删除这些行后,所有我的gems都正常工作。

我只是想发布我的答案,以防有人处于同样的位置。


0

在安装了IntelliJ IDEA和相关的Rail Dev插件后,我尝试生成控制器时遇到了几乎相同的消息。从我的应用程序目录中,我只需执行bundle install,然后就能再次生成控制器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接