ruby - 我怎样才能像在 Gemfile 中指定的那样安装 gem?

标签 ruby rubygems bundler

我想通过 gem install 安装一个 gem,但我需要它来解决当前项目的依赖关系。

基本上,当我在 Gemfile 中指定 gem 'xyz' 时,我想要 bundler 给我的功能,但我不想将该特定 gem 添加到 Gemfile 中。

我尝试执行 bundle exec gem install ... 但它似乎不起作用。

编辑: 我不想将它添加到 Gemfile 的原因是它可能类似于 metric_fumeticalsaikurorails_best_practices 等。简单的 gem 是一种实用工具,可能只会使项目困惑。

我可能只想暂时使用它们,或者安装它们,尝试一下,如果它没有按照我想要的方式运行,请执行 rvm gemset emptybundle install 再次清理。

最佳答案

Bundler 的部分目的在于防止您做那样的事情(防止您在项目未声明 gem 时从外部注入(inject) gem)。

寻找一种方法就是在 Bundler 中寻找错误。如果您确实找到了绕过 Bundler 执行机制的方法,您可能不应该使用它;相反,您可以考虑将其作为 Bug 提交给 Bundler 的问题跟踪器。

现在我们来谈谈真正的问题:你能做什么?你应该怎么做?

  • 您应该使用 RVM gemsets 或 Bundler 来隔离您的应用程序及其 gem 依赖项。你不需要两者。为此,我会推荐 Bundler 而不是 RVM gemsets。

  • 您应该将要使用的任何 gem 添加到您的 Gemfile 中并与您的应用程序集成(即加载您的应用程序或作为应用程序的一部分加载的 gem)。这不是任何不与您的应用程序集成的 gem 的要求。

  • 您应该避免将更改的 Gemfile 或 Gemfile.lock 提交到版本控制,直到您对您的应用程序继续可接受地运行感到满意为止(测试通过、新 gem 做了一些有用的事情等)。

或者你应该停止使用 Bundler,因为你想做的事情是明确设计来阻止你做的(不推荐)。

关于ruby - 我怎样才能像在 Gemfile 中指定的那样安装 gem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8727794/

相关文章:

ruby-on-rails - 如果在 Mechanize 的按钮名称中使用与号,我是否需要转义字符?

ruby - dlload' 中的 block 中的救援:无法在运行上限上加载 user32 (Fiddle::DLError)

ruby - Bundler 发现错误的 ruby​​ 版本

ruby-on-rails - Rails 寻找错误的 bundler 路径

javascript - Web/SPA 元素中的 Visual Studio 2015 Bundler/Minifier 问题

ruby - Gem 在 irb 中加载但不在控制台中加载

ruby-on-rails - ruby 的 `create!` 有什么方法可以一次制作多个对象吗?

ruby-on-rails - 如何在 Ruby on Rails 中运行 CGI Ruby 脚本?

ruby-on-rails - 安装 libyaml Cygwin

ruby-on-rails - Rails 3 安装错误 : "invalid value for @cert_chain"