【问题标题】:How to install Ruby gem automatically, if required?如果需要,如何自动安装 Ruby gem?
【发布时间】:2012-01-25 08:14:36
【问题描述】:

给定一个使用特定 gem(例如 term-ansicolor)的 Ruby 程序,如果需要,我如何自动安装 gem?

换句话说,程序会:

require 'term/ansicolor'

而且,如果之前没有安装 gem,我想安装它并继续程序,而不是收到错误:

LoadError: no such file to load -- term/ansicolor
from (irb):1:in `require'
from (irb):1
from :0

实现这一目标的最合适方法是什么?

【问题讨论】:

  • 自动安装软件,除非这是程序的唯一目的,否则不是一个好主意。 1) 安装软件不是一件容易的事。 2) 有些人可能会认为软件在没有用户要求的情况下自动安装其他软件的软件是恶意软件。

标签: ruby gem


【解决方案1】:

没有这样的工具。在此处阅读有关它的详细讨论http://www.ruby-forum.com/topic/2728297

【讨论】:

    【解决方案2】:

    您应该考虑使用bundler。这是在 Ruby 软件中管理依赖项的事实上的标准方法。

    【讨论】:

    • 更准确地说,Bundler 的--standalone 模式here 应该这样做,因为显然您也不想手动安装 Bundler 本身。
    【解决方案3】:

    我一直在使用这种模式:

    require 'rubygems'
    begin
      gem 'minitest'
    rescue Gem::LoadError
      Gem.install('minitest')
      gem 'minitest'
    end
    require 'minitest'
    

    【讨论】:

      【解决方案4】:

      或者,您可以将包构建到 gem 中,并将所需的 gem 作为依赖项放在 gemspec 中。然后,当您安装 gem 时,它会自动安装。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多