【问题标题】:What is the proper way to install a Ruby gem; Using RVM or Bundler?安装 Ruby gem 的正确方法是什么?使用 RVM 或 Bundler?
【发布时间】:2011-05-06 01:39:23
【问题描述】:

我正在遵循以下说明:https://github.com/phifty/agraph/blob/master/README.rdoc, 并且有一个使用此命令安装 gem 的步骤:

gem install agraph

我是 RoR 的新手,但我有 RVM 和 Bundler。我不确定我应该使用哪个。我应该使用 RVM 还是 Bundler 安装它?命令应该是什么?

【问题讨论】:

    标签: ruby-on-rails ruby rvm bundler


    【解决方案1】:

    RVM 是 Ruby 版本管理器。它使您可以轻松地并排维护单独安装的 Ruby,而不会发生冲突。这样做的必要条件之一是将每个 Ruby 版本的 gem 分开,因为安装程序可以根据您正在运行的 Ruby 版本“切换”。

    Gem 是一个让您安装 gems 的命令。它是整个基础架构的核心——它不会调用较低级别的“打包器”来完成它的工作。

    Bundler 在 Gem 的“顶部”运行。它使管理 gem 版本更容易,就像 RVM 对 Ruby(Ruby 的版本)所做的那样。它会自动安装未安装的 gem,因此您无需在运行 bundle(或 bundle install)之前显式运行 gem install gem-name


    如果您开始使用 RVM 的 gemset,Gem、Bundler 和 RVM 都会交叉路径。它们允许您通过创建一个单独的“宝石环境”来进一步隔离和控制您的环境。这样做的主要用途是让您可以将不同项目的 gem 分开,这有助于管理版本。如果您使用 Bundler,那么这并不像在 Rails/Sinatra/etc 之前的 Bundler 时代那样重要或有用。需要最新版本的 gem。

    这能回答你的问题吗?

    【讨论】:

    • 谢谢 - 它在很大程度上解决了问题。但仍然不确定如何使用捆绑程序来准确安装该 gem。
    • 它将使用gem。 Bundler 也使用gem。安装 gem 只包括 1) 下载它,2) 运行编译/安装脚本(如果有的话),以及 3) 将文件放在 gem 目录中。 Bundler 只是帮助你/Rails/Sinatra/等。使用每个 gem 的正确版本,而不是为不同的应用程序使用不同的版本。
    • 不,这只会安装 gem。如果此 gem 用于 Rails 项目(或您计划使用 Bundler 的任何其他项目),则应将 gem 添加到 Gemfile 中,以便任何时候需要引导新应用程序时,Bundler 都会为您安装此 gem。
    • 我执行了“gem install gem-name”,它成功了。但是当我运行“bundle”或“bundle install”时,我得到了“无法找到 Gemfile”的错误 - 任何想法为什么会发生这种情况?
    • 您可能在当前目录中没有 gemfile。你在使用 Rails 吗?如果是这样,cd 进入您的 Rails 应用程序并再次运行它。
    【解决方案2】:

    如果您使用的是 Rails 3,您应该将命令放在您的应用程序中 Gemfile

    gem 'agraph'
    

    然后运行bundle install。这将在您部署时负责解决依赖关系并将 gem 捆绑到您的生产服务器上。

    对于 RVM,您可能要做的唯一事情就是为您的应用程序设置一个 RVM gemset。您可以通过在您的应用程序目录中创建一个.rvmrc 文件来做到这一点,当您进入该目录时,它将自动设置 RVM ruby​​ 版本和 gemset。您不应该使用 RVM 为您的应用程序手动安装 gem。

    【讨论】:

    • PS:单独bundlebundle install 做同样的事情。无需冗长。 ;)
    • “冗长”和“清晰”之间的细线。我喜欢这个评论,但有时更冗长的解决方案更容易理解。不过也许不适用于 Unix 命令...
    • 当然,但是bundle 真的说明了一切,不是吗?
    • 是的,我想是的,只要你知道bundle installbundle update之间的区别
    猜你喜欢
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多