gpt4 book ai didi

ruby-on-rails - bundle show gemname 和 gem list gemname 的区别

转载 作者:行者123 更新时间:2023-12-04 07:41:15 39 4
gpt4 key购买 nike

如果我在 rails 命令提示符下执行 gem list rack-cache 那么它不会显示具有该名称的 gem 但如果我执行 bundle show rack -cache 然后它给了我像 /vendor/bundle/ruby/1.9.1/gems/rack-cache-1.2 这样的路径 gem 存放的地方。

我不理解这种行为,因为如果 gem 存在于后一个命令的路径中,那么为什么当我给出 gem list rack-cache 命令时它没有显示。有什么区别。

最佳答案

困惑来自问题 bundler 正在解决。

当您将 Gems 安装到系统范围的 gem 存储库中时,一旦您拥有多个应用程序,您最终会得到多个版本的 gem。

例如,您最终可能会得到 3 个 Rails 版本:3.2.8、3.2.6 和 3.1.0

如果您执行 require rails ruby​​gems 可以使用这些版本中的任何一个,并且如果您最初针对 3.1.0 构建的应用程序与某些更改不兼容,您最终会感到困惑在 3.2.8 中。

bundler 所做的是准确安装 Gemfile.lock 中指定的 gem,并锁定这些 gem 以供该应用程序使用。因此,Bundler 修改了 ruby​​gems 的加载路径,因此只有 Gemfile.lock 中的 Gem 对应用程序真正可用。

因此,bundle install 并不是将 gem 安装到系统范围的 gem 目录中,而是为每个项目安装到不同的路径。这就是为什么您在 bundler 目录中而不是在系统范围内看到 gem 的原因。如果您通过 gem install 安装 rack-cache,您也会在 gem list 中看到它。

关于ruby-on-rails - bundle show gemname 和 gem list gemname 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13700529/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com