捆绑不适用于 rbenv

Posted

技术标签:

【中文标题】捆绑不适用于 rbenv【英文标题】:Bundle not working with rbenv 【发布时间】:2015-03-19 08:17:22 【问题描述】:

我正在尝试将捆绑器与 rbenv 一起使用。我一直工作到今天。我唯一能做的就是打破它是gem pristine --allgem cleanup?尝试安装 bundler 时出现以下错误。

Antarrs-MacBook-Pro:some-app antarrbyrd$ sudo gem install bundler
Password:
Bundler gave the error "Could not find mail-2.5.4 in any of the sources" while processing "/Users/antarrbyrd/dev/some-app/Gemfile". Perhaps you forgot to run "bundle install"?
Successfully installed bundler-1.7.12
Parsing documentation for bundler-1.7.12
Done installing documentation for bundler after 3 seconds
1 gem installed
Antarrs-MacBook-Pro:some-app antarrbyrd$ bundle install
/Users/antarrbyrd/.rbenv/versions/2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:315:in `to_specs': Could not find 'bundler' (>= 0) among 8 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/Users/antarrbyrd/.gem', execute `gem env` for more information
    from /Users/antarrbyrd/.rbenv/versions/2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:324:in `to_spec'
    from /Users/antarrbyrd/.rbenv/versions/2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:64:in `gem'
    from /usr/local/bin/bundle:22:in `<main>'

当我执行rbenv rehashrbenv bundler on 时会出现此错误

Bundler gave the error "Could not find mail-2.5.4 in any of the sources" while processing "/Users/antarrbyrd/dev/some-app/Gemfile". Perhaps you forgot to run "bundle install"?

~/.bash_profile

export BUNDLER_EDITOR=atom
export PATH=$PATH:/usr/local/opt/android-sdk/build-tools/21.1.2
export HOMEBREW_GITHUB_API_TOKEN=...

export ANDROID_HOME=/usr/local/opt/android-sdk
export PATH="$HOME/.rbenv/bin:$PATH"
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

# Allow local Gem Managment 
# export GEM_HOME="$HOME/.gem"
# export GEM_PATH="$HOME/.gem"
# export PATH="$HOME/.gem/bin:$PATH"

gem env

RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.2
  - RUBY VERSION: 2.1.2 (2014-05-08 patchlevel 95) [x86_64-darwin14.0]
  - INSTALLATION DIRECTORY: /usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0
  - RUBY EXECUTABLE: /usr/local/var/rbenv/versions/2.1.2/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/var/rbenv/versions/2.1.2/bin
  - SPEC CACHE DIRECTORY: /Users/antarrbyrd/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-14
  - GEM PATHS:
     - /usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0
     - /Users/antarrbyrd/.gem/ruby/2.1.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "-n/usr/local/bin"
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/var/rbenv/versions/2.1.2/bin
     - /usr/local/Cellar/rbenv/0.4.0/libexec
     - /Users/antarrbyrd/.gem/bin
     - /usr/local/var/rbenv/shims
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /usr/local/var/rbenv/shims
     - /Users/antarrbyrd/.rbenv/bin
     - /Users/antarrbyrd/.rbenv/shims
     - /Users/antarrbyrd/.gem/bin
     - /usr/local/opt/android-sdk/build-tools/21.1.2

更新

我通过 brew 重新安装了 rbenv,现在运行 bundle install 时出现以下错误。

The `bundle' command exists in these Ruby versions:
  2.1.5

回应乔尔

Antarrs-MacBook-Pro:myapp antarrbyrd$ command -v ruby
/usr/local/var/rbenv/shims/ruby
Antarrs-MacBook-Pro:myapp antarrbyrd$ command -v bundle
/usr/local/bin/bundle
Antarrs-MacBook-Pro:myapp antarrbyrd$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin14.0]
Antarrs-MacBook-Pro:myapp antarrbyrd$ bundle -v
Bundler version 1.7.12
Antarrs-MacBook-Pro:myapp antarrbyrd$ 

【问题讨论】:

【参考方案1】:

我遇到了完全相同的问题,在这里和整个互联网上都尝试了所有方法,但最终对我有用的命令是:

gem update --system

【讨论】:

【参考方案2】:

提供的答案都不适合我,所以我必须完全卸载 rbenv 以及与 Ruby 相关的所有内容,然后使用 Homebrew 安装 Ruby 2.7.1; brew install ruby.

【讨论】:

就这是一个答案而言,这是一个糟糕的答案。 brew install ruby 全局安装 ruby​​,无法控制版本,并且将 ruby​​ 与全局 gem 一起使用会导致使用 bundler / Gemfiles 的项目出现问题【参考方案3】:

要安装 Ruby 小于 2.3.0 的捆绑程序,请使用以下命令

gem install bundler -v '< 2'

【讨论】:

【参考方案4】:
gem install bundler

您需要为您使用的每个 Ruby 版本重新安装 bundler。

参考:github issue

【讨论】:

【参考方案5】:

我今天也有类似的问题。我的问题已解决如下:

system dependencies
- rvenv
- ruby 2.5.0
- rails 5.1.6
检查 Gemfile.lock 中的捆绑器版本
BUNDLED WITH
  1.17.3
安装特定版本的捆绑器
$ gem install bundler -v 1.17.3
Fetching bundler-1.17.3.gem
Successfully installed bundler-1.17.3
Parsing documentation for bundler-1.17.3
Done installing documentation for bundler after 3 seconds
1 gem installed

希望这会对某人有所帮助。

【讨论】:

【参考方案6】:

如果其他解决方案都不适合你,试试这个。

由于某种原因,我无法在特定的 ruby​​ 版本上安装 bundler,因此重新安装 bundler 对我没有任何帮助。

但是我注意到rbenv whence bundle 是如何指定该捆绑包在某些 ruby​​ 版本中处于活动状态,而在其他版本中则没有。如果您在没有捆绑程序的 gem 的路径下查看(对我来说这是~/.rbenv/versions/2.5.1/bin/),您会注意到它不存在。但是在可以识别的其他版本下,您会看到可执行文件在那里(对我来说,它在 ~/.rbenv/versions/2.3.1/bin/bundle 下)。

只需将可执行文件从工作 ruby​​ 版本复制到损坏的版本。然后在文件的顶部,您会注意到 sha-bang 设置为另一个 ruby​​ 版本(对我来说这是#!/Users/myuser/.rbenv/versions/2.3.1/bin/ruby)。将版本路径更改为您要修复的 ruby​​ 版本,然后它就会神奇地开始工作。

【讨论】:

这对我来说是唯一可行的解​​决方案。我不喜欢它的工作原理,但我感谢你写出来。我想知道为什么 rbenv 没有做它应该做的事情?然而,我已经浪费了足够多的时间了。【参考方案7】:

尝试全局设置 ruby​​

rbenv global 2.3.1

【讨论】:

【参考方案8】:

尝试使用:

bin/包

而不是

捆绑

【讨论】:

这个工作正常,因为它选择了本地 ruby​​ 版本。【参考方案9】:

我明白了:

rbenv: bundle: command not found

The `bundle' command exists in these Ruby versions:
  2.3.0

升级到 Ruby 2.3.1 后

并通过以下方式解决:

gem install rails

来自工作文件夹

【讨论】:

gem install rails 是我所缺少的,谢谢 您只需要在使用rbenv 升级您的Ruby 版本后重新安装bundlerrbenv 让你的 gem 被每个版本的 Ruby 容器化。所以你需要做gem install bundler,你应该很高兴。 应该是gem install bundler 而不是gem install rails...不是每个人都会使用rails【参考方案10】:

以下是旧项目对我有用的方法:

    通过 rbenv 设置正确的 ruby​​ 版本

    $ cd YOUR_PROJECT_DIRECTORY
    $ rbenv install 2.1.0
    $ rbenv local 2.1.0
    如果安装包时仍然出现错误,请查找 PATH 警告:

    $ gem install bundle
    WARNING:  You don't have /Users/lex/.gem/ruby/2.1.0/bin in your PATH,
          gem executables will not run.
    Successfully installed bundle-0.0.1
    1 gem installed
    更新您的路径:

    $ PATH=/Users/lex/.gem/ruby/2.1.0/bin:$PATH
    再试一次:

    $ bundle install
    Fetching: bundler-1.11.2.gem (100%)
    HTTP GET https://bundler.rubygems.org/api/v1/dependencies
    HTTP 200 OK
    Fetching gem metadata from https://rubygems.org/
    . . .

使用 sudo 安装 gems 一般不是你想做的。

【讨论】:

第一步,指定要使用的本地(或全局)版本的 ruby​​ 至关重要,否则会出现循环,不管 .ruby-version 文件中有什么内容【参考方案11】:

您的安装陷入了循环。

更改到不是您的应用且没有 Gemfile 的目录。

然后照常使用gem install bundle(如果需要,请使用sudo

然后切换到您的应用目录,并执行通常的bundle install

这能解决您的问题吗?

如果您需要更多帮助,可以运行这些命令然后将结果粘贴到您的问题中吗?

 $ command -v ruby
 $ command -v bundle
 $ ruby -v
 $ bundle -v

查找结果与您的期望之间的任何不匹配。这将帮助您追踪正在发生的事情。您可能需要更新您的 Gemfile Ruby 版本。

(另外,您可能需要考虑从rbenv 更改为chruby,因为恕我直言,这些路径问题更好)

【讨论】:

我已经用输出更新了问题。现在它给了我以下错误Your Ruby version is 2.2.0, but your Gemfile specified 2.1.2,rbenv local 已经设置为 2.1.2 重新安装 bundler 并重新散列后,上述错误已解决。 在您的解决方案之后,我得到:错误:无法加载此类文件 -- 捆绑器/设置 (LoadError) 这对我不起作用。来自@Vbp 的gem install bundler 确实有效。 谢谢,为我工作。究竟是什么导致了循环?【参考方案12】:

我在使用 Foreman 运行 Guard 时遇到了类似的问题。 我原来的运行命令是:

bundle exec foreman run guard -c

这给了我这些错误:

11:07:52 - INFO - Run all
11:07:52 - INFO - Running all specs
/Users/MyUser/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rubygems/dependency.rb:315:in `to_specs': Could not find 'bundler' (>= 0) among 146 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/Users/MyUser/devel/o2/vesta/vendor/bundle/ruby/2.2.0', execute `gem env` for more information
        from /Users/MyUser/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rubygems/dependency.rb:324:in `to_spec'
        from /Users/MyUser/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rubygems/core_ext/kernel_gem.rb:64:in `gem'
        from /Users/MyUser/.rbenv/versions/2.2.0/bin/bundle:22:in `<main>'

简单的解决方法是不要将bundle exec 与工头一起使用,而是将其用于防卫。例如

foreman run bundle exec guard -c

希望这会有所帮助。

【讨论】:

以上是关于捆绑不适用于 rbenv的主要内容,如果未能解决你的问题,请参考以下文章

捆绑安装不适用于 capistrano

Magento - 以编程方式添加的捆绑产品不适用于购物篮/前端

Azure 中的捆绑不适用于 bootstrap 和 jquery、ASP.NET MVC 5

XDebug 不适用于 xampp

Rails:为啥捆绑安装被 sassc 2.4.0 冻结

使用系统 ruby​​ 版本而不是下载的捆绑程序