7

クライアント側にgem(JSON)をインストールしたいのですが、まだインストールされていない場合に限ります(1.9のRubyディストリビューションにはJSONがバンドルされています)。

からそれを行う方法の手がかりを見つけることができませんでしたgem help installgem install jsonまた、Ruby 1.9がインストールされている(JSONがバンドルされている)Windowsシステムで実行すると、次のようになります。

    ERROR:  Error installing json:
    The 'json' native gem requires installed build tools.

--gemがすでに存在するという事実を無視してインストールしようとします。

gem listまた、クライアントがWindowsである可能性があるため、出力をgrepするようなbashトリックを実行することはできません。

では、gemがまだシステムに存在しない場合にのみ、gemをインストールするマルチプラットフォームの方法は何でしょうか。

4

4 に答える 4

2

これはうまくいくかもしれません...

begin
  require "json"
rescue LoadError
  system("gem install json")
end

「json」を必要としない場合は、$LOAD_PATHから削除できます。

または、ワンライナーとして置きます:

ruby -e 'begin; require "some_gem"; rescue LoadError; system "gem install some_gem"; end'
于 2012-04-04T18:31:03.483 に答える
2

gemがインストールされているかどうかを確認するには:

gem list --installed "^json$"

必要に応じてgemをインストールするには:

ruby -e '`gem list -i \"^json$\"`.chomp=="true" or `gem install json`'

コマンドラインスクリプトを作成するには:

#!/usr/bin/env ruby
#
# Ruby script to install a gem if it's needed.
# This script first uses gem list to see if the
# gem is already installed, matching the exact name.
#
# If the gem is installed, then exit.
# If the gem is not installed, then install it.
#
# You can this script whatever you like;
# I call mine gem-install-fast because it's
# faster than re-installing a gem each time.
# 
# Example:
#
#    gem-install-fast json
#
name=ARGV[0] and `gem list -i "^#{name}$"`.chomp=="true" or `gem install #{name}`

コマンドラインスクリプトを使用するには:

gem-install-fast json
于 2013-01-24T05:34:19.833 に答える
0
gem update json

必要な場合にのみインストールする必要があります。私のWindows7システムではインストールされます。

C:\Ruby193\bin>gem update json
Updating installed gems
Updating json
Fetching: json-1.6.6.gem (100%)
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Successfully installed json-1.6.6
Updating multi_json
Fetching: multi_json-1.2.0.gem (100%)
Successfully installed multi_json-1.2.0
Gems updated: json, multi_json
Installing ri documentation for json-1.6.6...
Installing ri documentation for multi_json-1.2.0...
Installing RDoc documentation for json-1.6.6...
Installing RDoc documentation for multi_json-1.2.0...

C:\Ruby193\bin>gem update json
Updating installed gems
Nothing to update

C:\Ruby193\bin>
于 2012-04-04T12:41:02.427 に答える
0

私が見つけた最高のものはこれです(シェルコマンド): $ gem install asciidoctor --conservative

現在インストールされているgemでgemスペックをカバーできない場合にのみインストールされます。

于 2015-02-20T22:09:05.483 に答える