按需安装gem

Ole*_*eev 7 ruby gem rubygems

我想在客户端安装gem(JSON),但前提是尚未安装(有1.9个Ruby发行版捆绑了JSON).

我无法找到如何做到这一点的线索gem help install.gem install json在安装了Ruby 1.9的Windows系统上运行(捆绑了JSON)会导致运行

    ERROR:  Error installing json:
    The 'json' native gem requires installed build tools.
Run Code Online (Sandbox Code Playgroud)

- 它试图安装它而忽略了gem已经存在的事实.

我不能做像grepping gem list输出这样的bash技巧,因为客户端可能是Windows.

那么只有在系统中不存在宝石的情况下才能安装宝石的多平台方式是什么?

小智 2

这可能有效...

begin
  require "json"
rescue LoadError
  system("gem install json")
end
Run Code Online (Sandbox Code Playgroud)

如果您不想需要“json”,可以将其从 $LOAD_PATH 中删除。

或者,作为单行:

ruby -e 'begin; require "some_gem"; rescue LoadError; system "gem install some_gem"; end'
Run Code Online (Sandbox Code Playgroud)