【问题标题】:can't find gem rails - Gem::GemNotFoundException找不到 gem rails - Gem::GemNotFoundException
【发布时间】:2012-03-29 23:21:13
【问题描述】:

使用 ubuntu 10.04,rvm。起初,我用 rvm、gem rails 安装了 ruby​​ 1.9.2 并生成了一些新项目并成功启动它。一切正常。但是换到另一个项目后,执行bundle install命令(输出看起来OK)并启动rails server - 出现错误:

铁轨

/home/jacek/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/site_ruby/1.9.1/rubygems.rb:316:in `bin_path': can't find gem rails ([">= 0"]) with executable rails (Gem::GemNotFoundException)
from /home/jacek/.rvm/gems/ruby-1.9.2-p318/bin/rails:19:in `<main>'

宝石列表导轨

*** LOCAL GEMS ***
rails (3.2.2)

宝石环境

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.18
  - RUBY VERSION: 1.9.2 (2012-02-14 patchlevel 318) [i686-linux]
  - INSTALLATION DIRECTORY: /home/jacek/.rvm/gems/ruby-1.9.2-p318
  - RUBY EXECUTABLE: /home/jacek/.rvm/rubies/ruby-1.9.2-p318/bin/ruby
  - EXECUTABLE DIRECTORY: /home/jacek/.rvm/gems/ruby-1.9.2-p318/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/jacek/.rvm/gems/ruby-1.9.2-p318
     - /home/jacek/.rvm/gems/ruby-1.9.2-p318@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

我的路径(包括可执行目录:/home/jacek/.rvm/gems/ruby-1.9.2-p318/bin)

/home/jacek/.rvm/gems/ruby-1.9.2-p318/bin:/home/jacek/.rvm/gems/ruby-1.9.2-p318@global/bin:/home/jacek/.rvm/rubies/ruby-1.9.2-p318/bin:/home/jacek/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

如果有任何帮助,我将不胜感激

【问题讨论】:

  • 如果你尝试bundle exec rails s会发生什么?
  • 嗯还有另一个错误,可能与其他宝石有关。看起来你的解决方案是正确的。你能告诉我,为什么我不能只输入 rails s 吗?
  • ./script/rails s 使用 Gemfile
  • 您在其中一个项目中有.bundle/config 吗?

标签: ruby-on-rails ruby ruby-on-rails-3 rvm


【解决方案1】:

对我来说刚刚安装了捆绑程序。这让一切都恢复正常。

gem install bundler --no-ri --no-rdoc

【讨论】:

    【解决方案2】:

    如果您使用命令bundle installGEMFILE 安装gem,它会将gem 安装到gem 的默认系统位置,如the bundler docs here 中所述。之后,您可以使用 bundlers bundle exec 命令在 bundle 的上下文中执行命令,as outlined in the docs here。这将确保执行您使用bundle install 安装的gem 版本。

    如果您查看提供文档概述的 homepage for bundler,它会说明以下内容:

    在某些情况下,如果可执行文件恰好安装在您的系统中并且没有拉入任何与您的捆绑包冲突的 gem,则运行不带 bundle exec 的可执行文件可能会起作用。

    但是,这是不可靠的,并且是相当痛苦的根源。即使它看起来可以正常工作,但将来或在另一台机器上可能无法正常工作。

    我猜你在控制台中运行gem which rails,然后在你的控制台中运行bundle show rails,你的系统默认安装的rails安装与你的bundle安装的不同。

    您说您使用rvm 管理您的rubygem。我想你可能没有正确配置它。尝试在您的控制台中执行 rvm notes 命令,以确保您已解决在操作系统上安装所需/推荐的所有步骤。当您理想地运行echo $PATH 时,您希望确保rvm 的可执行文件是包含在您的路径中的第一件事。这将确保为rvm 安装的gem 将是在您尝试执行它们而不加前缀bundle exec 时执行的那些。如果rvm notes 没有为您提供完成此操作所需的提示,请尝试仔细查看docs for installation on the RVM website

    【讨论】:

      【解决方案3】:

      例如,您可以使用$ rvm use --default 2.4.0 在 Ruby 之间切换版本

      但是对于你的问题,试试这个:

      1. $ gem install bundler

      2. $ gem install rails

      希望对您有所帮助!

      【讨论】:

        【解决方案4】:

        我认为下面的命令会起作用

        gem pristine rails
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-12
          • 1970-01-01
          • 1970-01-01
          • 2018-01-22
          • 1970-01-01
          • 2019-05-31
          • 2019-08-17
          • 2023-02-04
          相关资源
          最近更新 更多