Gibt es eine Ruby-Methode, die ich aufrufen kann, um die Liste der installierten Edelsteine abzurufen?
Ich möchte die Ausgabe von analysieren gem list
. Gibt es einen anderen Weg, dies zu tun?
Der Gem-Befehl ist jetzt in Ruby 1.9+ enthalten und eine Standardergänzung zu Ruby vor 1.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
Hier ist eine aktualisierte Methode, um eine Liste zu erhalten:
require 'rubygems'
def local_gems
Gem::Specification.sort_by{ |g| [g.name.downcase, g.version] }.group_by{ |g| g.name }
end
Da es local_gems
sich auf verlässt group_by
, wird ein Hash der Edelsteine zurückgegeben, wobei der Schlüssel der Name des Edelsteins ist und der Wert ein Array der Edelsteinspezifikationen ist. Der Wert ist ein Array der Instanzen dieses installierten Gems, sortiert nach der Versionsnummer.
Das macht es möglich, Dinge zu tun wie:
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]
Und:
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
Das letzte Beispiel ähnelt der gem query --local
Befehlszeile, nur Sie haben Zugriff auf alle Informationen für die Spezifikation eines bestimmten Edelsteins.
Dies listet alle Edelsteine auf, die ich installiert habe.
http://guides.rubygems.org/command-reference/#gem-list
Siehe 2.7 Auflisten aller installierten Edelsteine
quelle
gem list
.gem list
hat genau das getan, was ich brauchte, und es ist viel einfacher und leichter, sich an die CLI zu erinnern. Warum so viele Befehle, um eine Sache zu tun?Beide
und
Liste 69 Einträge
Während
gibt mir 82
Ich habe
wc -l
die Zahlen bekommen. Ich bin mir nicht sicher, ob dies der richtige Weg ist, um dies zu überprüfen. Versucht, die Ausgabe in Textdateien umzuleiten und unterschied sich, aber das hat nicht geholfen - muss manuell einzeln verglichen werden.quelle
ruby
Befehl listet jede Edelsteinversion in einer separaten Zeile auf. Für zB:sass (3.3.14, 3.3.7, 3.3.6, 3.2.19)
gegensass-3.3.14
,sass-3.3.7
,sass-3.3.6
,sass-3.2.19
Dafür gibt es seit Ewigkeiten eine Methode:
quelle
Wenn Ihre App jedoch Bundler verwendet, wird nur eine Liste der abhängigen lokalen Edelsteine zurückgegeben. So installieren Sie alle:
quelle
NoMethodError: undefined method
? ' für nil: NilClass` wenn ich es benutze (in arails console
).Verwenden Sie diesen Code (im Konsolenmodus):
quelle
Eine modernere Version wäre, etwas zu verwenden, das dem folgenden ähnelt ...
HINWEIS: Der erste Teil einer Antwort von Evgeny ist sehr ähnlich. Aufgrund der Seitenformatierung ist er jedoch leicht zu übersehen.
quelle
Hier ist ein wirklich schöner Einzeiler, um alle Edelsteine zusammen mit ihrer Version, Homepage und Beschreibung zu drucken:
quelle
Probieren Sie es im Terminal aus:
quelle
Vielleicht können Sie die Dateien (Edelsteine) aus dem Edelsteinverzeichnis abrufen?
quelle
In Ihrem Debugger-Typ
$LOAD_PATH
erhalten Sie eine Liste Ihrer Edelsteine. Wenn Sie keinen Debugger haben, installieren Sie pry:Dadurch wird ein Array Ihrer installierten Edelsteine ausgegeben.
quelle