web-dev-qa-db-ja.com

リモートサイトで入手可能なgemのすべてのバージョンを一覧表示するにはどうすればよいですか?

指定されたgemのリモートで利用可能なすべてのバージョンを見つけようとしています。

私は使用してみました:

gem list rhc --remote

しかし、それは示しています:

*** REMOTE GEMS ***
rhc (0.84.15)
rhcp (0.2.18)
rhcp_Shell (0.2.12)

何か案は?

128
opensas

まあ、それは思ったよりも簡単でした(まあ、実際にはそうではありませんが、そう簡単に言えば)。

gem list rhc --remote --all

返されるもの:

*** REMOTE GEMS ***
rhc (0.84.15, 0.84.13, 0.83.9, 0.82.18, 0.81.14, 0.80.5, 0.79.5, 0.77.8, 0.75.9, 0.74.6, 0.74.5, 0.73.14, 0.72.29, 0.71.2, 0.69.6, 0.69.3, 0.68.5)
rhcp (0.2.18, 0.2.17, 0.2.16, 0.2.15, 0.2.14, 0.1.9, 0.1.8, 0.1.7, 0.1.6, 0.1.5, 0.1.4, 0.1.3, 0.1.2)
rhcp_Shell (0.2.12, 0.2.11, 0.0.9, 0.0.7, 0.0.6, 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1)
193
opensas

RubyGem's Guide によると、searchキーワードを使用する必要があります。したがって、コマンドは次のようになります。

gem search rhc --all

正確な名前を使用する場合:

gem search ^rhc$ --all

プレリリースバージョンを含める場合は、--preを使用します

gem search ^rhc$ --pre

zshを使用している場合は、引用符を追加します。

gem search '^rhc$' --all

29
Eyal Levin

@eyalevの答えを拡張するために、行ごとに1つのバージョンのリストが必要な場合は、1行のライナーを使用します。

gem search '^rspec$' --all \
  | grep -o '\((.*)\)$' \
  | tr -d '() ' \
  | tr ',' "\n" \ 
  | sort
0.0.10
0.1.0
0.1.1
# etc.

これをもう少し再利用可能にするために、いくつかの関数を書くことができます(私の限られたbashスキルをご容赦ください):

function extract_gem_versions() {   
  echo "$1" \
    | grep -o '\((.*)\)$' \
    | tr -d '() ' \
    | tr ',' "\n"; 
}

function gem_versions() { 
  local gem_name="$1"; 
  local pattern="^${gem_name}$";  
  local vers_str="$(gem search ${pattern} --all)";  
  extract_gem_versions "$vers_str";  
}

gem_versions rspec | sort
0.0.10
0.1.0
0.1.1
# etc.
9
Jared Beck