首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包安装两次。

包安装两次。
EN

Stack Overflow用户
提问于 2022-06-29 00:49:59
回答 1查看 98关注 0票数 1

包安装在Mac上运行了两次

代码语言:javascript
复制
➜  k_rails_template git:(main) ✗ bundle install
Using Local GEMs
Using Local GEMs <----
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/...........  <----
Resolving dependencies....
Using rake 12.3.3
.
.
.

我已经检查了各种.zsh配置,以确定是否发生了什么事情,并且我已经使用asdf重新安装了一个新的Ruby2.7.6

我手动检查了这些文件,以确定是否有问题。

  • .zshenv
  • .zprofile
  • .zshrc

Gem文件

代码语言:javascript
复制
# frozen_string_literal: true

source 'https://rubygems.org'

gemspec

puts 'Using Local GEMs'

group :development, :test do
  gem 'guard-bundler'
  gem 'guard-rspec'
  gem 'guard-rubocop'
  gem 'rake', '~> 12.0'
  gem 'rake-compiler', require: false
  gem 'rspec', '~> 3.0'
  gem 'rubocop'
  gem 'rubocop-rake', require: false
  gem 'rubocop-rspec', require: false
end

group :test do
  gem 'simplecov', require: false
end

gem env

代码语言:javascript
复制
gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 3.1.6
  - RUBY VERSION: 2.7.6 (2022-04-12 patchlevel 219) [x86_64-darwin21]
  - INSTALLATION DIRECTORY: /Users/xmen/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0
  - USER INSTALLATION DIRECTORY: /Users/xmen/.gem/ruby/2.7.0
  - RUBY EXECUTABLE: /Users/xmen/.asdf/installs/ruby/2.7.6/bin/ruby
  - GIT EXECUTABLE: /usr/local/bin/git
  - EXECUTABLE DIRECTORY: /Users/xmen/.asdf/installs/ruby/2.7.6/bin
  - SPEC CACHE DIRECTORY: /Users/xmen/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/xmen/.asdf/installs/ruby/2.7.6/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-21
  - GEM PATHS:
     - /Users/xmen/.asdf/installs/ruby/2.7.6/lib/ruby/gems/2.7.0
     - /Users/xmen/.gem/ruby/2.7.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-document"
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/xmen/.asdf/installs/ruby/2.7.6/bin
     - /usr/local/opt/openssl@1.1/bin
     - /Users/xmen/.asdf/shims
     - /Users/xmen/.asdf/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /usr/local/go/bin
     - /usr/local/MacGPG2/bin
     - /usr/local/share/dotnet
     - ~/.dotnet/tools
     - /Library/Apple/usr/bin
     - /Library/Frameworks/Mono.framework/Versions/Current/Commands
     - /Users/xmen/Library/Python/3.9/bin
     - /Users/xmen/.dotnet/tools
     - /Users/xmen/.gem/ruby/2.7.0/bin
     - /usr/local/opt/fzf/bin
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-29 21:07:54

bundle install不会运行两次。第二次获取的是内部绑定逻辑。

代码语言:javascript
复制
# Gemfile

source "https://rubygems.org"
gem "guard-bundler"

例如,使用Bundlerv2.2.6,上面的Gemfile将使bundler运行两个获取请求。

代码语言:javascript
复制
Fetching gem metadata from https://rubygems.org/..............
Fetching gem metadata from https://rubygems.org/.

第二个请求来自双重检查逻辑:

https://github.com/rubygems/rubygems/blob/bundler-v2.2.6/bundler/lib/bundler/source/rubygems.rb#L261

令人惊讶的是,第二次获取是对邦德勒宝石本身的双重检查。拉出请求固定,在v2.2.7中。

升级到bundler v2.2.7只发出一个请求。然而,随着更多的宝石在Gemfile中,将有更多的双重检查的邦德勒。我假设以后的版本也会有更多的性能/逻辑改进。

您可以看到为什么邦德勒使用--verbose选项运行第二个fetch:

代码语言:javascript
复制
$ bundle update --verbose
...
Double checking for ["bundler"] in rubygems repository https://rubygems.org/ or installed locally
Fetching gem metadata from https://rubygems.org/
Looking up gems ["bundler"]
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72794621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档