[解決済み] インストールされているgemのリスト?
2022-04-24 07:53:55
質問
インストールされているgemsのリストを取得するために呼び出すことができるRubyのメソッドはありますか?
の出力をパースしたい。
gem list
. 他に方法はありますか?
どのように解決するのですか?
Gemコマンドは、現在ではRuby1.9以上に含まれていますが、Ruby1.9以前では標準的に追加されたものです。
require 'rubygems'
name = /^/i
dep = Gem::Dependency.new(name, Gem::Requirement.default)
specs = Gem.source_index.search(dep)
puts specs[0..5].map{ |s| "#{s.name} #{s.version}" }
# >> Platform 0.4.0
# >> abstract 1.0.0
# >> actionmailer 3.0.5
# >> actionpack 3.0.5
# >> activemodel 3.0.5
# >> activerecord 3.0.5
リストを取得するための最新の方法を紹介します。
require 'rubygems'
def local_gems
Gem::Specification.sort_by{ |g| [g.name.downcase, g.version] }.group_by{ |g| g.name }
end
なぜなら
local_gems
に依存しています。
group_by
この場合、キーは gem の名前、値は gem の仕様の配列となります。値は、インストールされているそのgemのインスタンスの配列で、バージョン番号順に並べられます。
それによって、次のようなことが可能になります。
my_local_gems = local_gems()
my_local_gems['actionmailer']
# => [Gem::Specification.new do |s|
# s.authors = ["David Heinemeier Hansson"]
# s.date = Time.utc(2013, 12, 3)
# s.dependencies = [Gem::Dependency.new("actionpack",
# Gem::Requirement.new(["= 4.0.2"]),
# :runtime),
# Gem::Dependency.new("mail",
# Gem::Requirement.new(["~> 2.5.4"]),
# :runtime)]
# s.description = "Email on Rails. Compose, deliver, receive, and test emails using the familiar controller/view pattern. First-class support for multipart email and attachments."
# s.email = "[email protected]"
# s.homepage = "http://www.rubyonrails.org"
# s.licenses = ["MIT"]
# s.name = "actionmailer"
# s.require_paths = ["lib"]
# s.required_ruby_version = Gem::Requirement.new([">= 1.9.3"])
# s.requirements = ["none"]
# s.rubygems_version = "2.0.14"
# s.specification_version = 4
# s.summary = "Email composition, delivery, and receiving framework (part of Rails)."
# s.version = Gem::Version.new("4.0.2")
# end]
そして
puts my_local_gems.map{ |name, specs|
[
name,
specs.map{ |spec| spec.version.to_s }.join(',')
].join(' ')
}
# >> actionmailer 4.0.2
...
# >> arel 4.0.1,5.0.0
...
# >> ZenTest 4.9.5
# >> zucker 13.1
最後の例は
gem query --local
コマンドラインでは、特定のgemの仕様に関するすべての情報にアクセスできます。
関連
-
[解決済み] json gem のインストール中にエラー 'mkmf.rb can't find header files for ruby' が発生する。
-
[解決済み] プロキシ(ISA-NTLM)の後ろからRuby Gemsをアップデートする方法
-
[解決済み] 変数が整数であるかどうかのチェック
-
[解決済み] gemのインストールで --no-ri --no-rdoc をデフォルトにするには?
-
[解決済み] Ruby on RailsでJSON出力を "きれい "にフォーマットする方法
-
[解決済み] RubyでJSON文字列をパースする
-
[解決済み] gemファイルがインストールされている場所を確認する方法
-
[解決済み] gem install: gemネイティブエクステンションのビルドに失敗しました(ヘッダーファイルが見つかりません)。
-
[解決済み】OSXで、インストールされているすべてのgemsをアンインストールしますか?
-
[解決済み】Ubuntuでのsqlite3-rubyのインストールエラー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】StringからIntegerへの暗黙の変換がない(TypeError)?
-
[解決済み】Rubyで数値の配列の合計を出すには?
-
[解決済み] Rubyのメソッド'to_sym'は何をするのですか?
-
[解決済み] Aptana Studio 3.6をWindowsにインストールできない
-
[解決済み] ルビー階乗関数
-
[解決済み] gemをインストールできない - makeが内部または外部のコマンド操作可能なプログラムまたはバッチファイルとして認識されない。
-
[解決済み] Rubyで中央値を計算する
-
[解決済み] ルビー、すべての単語の最初の文字を大文字にする
-
[解決済み] Rubyのダブルコロン `::` とは何ですか?
-
[解決済み] ファイルの存在を確認する方法 [重複]について