Suche…


Ruby Edelsteine ​​installieren

In diesem Handbuch wird davon ausgegangen, dass Sie bereits Ruby installiert haben. Wenn Sie Ruby < 1.9 Sie RubyGems manuell installieren, da es nicht nativ enthalten ist .

Geben Sie den folgenden Befehl ein, um einen Rubinstein zu installieren:

gem install [gemname]

Wenn Sie an einem Projekt mit einer Liste von Gem-Abhängigkeiten arbeiten, werden diese in einer Datei namens Gemfile . Um einen neuen Edelstein im Projekt zu installieren, fügen Sie der Gemfile die folgende Codezeile Gemfile :

gem 'gemname'

Diese Gemfile wird vom Bundler- Gemfile verwendet, um die Abhängigkeiten zu installieren, die für Ihr Projekt erforderlich sind. Dies bedeutet jedoch, dass Sie Bundler zuerst installieren müssen, indem Sie Folgendes ausführen (falls Sie dies nicht bereits getan haben):

gem install bundler

Speichern Sie die Datei und führen Sie dann den Befehl aus:

bundle install

Versionen angeben

Die Versionsnummer kann im Befehl live mit dem Flag -v , z. -v :

gem install gemname -v 3.14

Bei der Angabe von Versionsnummern in einer Gemfile stehen Ihnen mehrere Optionen zur Verfügung:

  • Keine Version angegeben ( gem 'gemname') - Installiert die neueste Version, die mit anderen Gemfile in der Gemfile kompatibel ist.
  • Genaue Version angegeben ( gem 'gemname', '3.14' ) - gem 'gemname', '3.14' nur Version 3.14 zu installieren (und Gemfile fehl, wenn dies nicht mit anderen Gemfile in der Gemfile ).
  • Optimistische Mindestversionsnummer ( gem 'gemname', '>=3.14' ) - gem 'gemname', '>=3.14' nur, die neueste Version zu installieren, die mit anderen Gemfile in der Gemfile kompatibel ist, und schlägt fehl, wenn keine Version größer oder gleich 3.14 kompatibel ist. Der Operator > kann auch verwendet werden.
  • Pessimistische Mindestversionsnummer ( gem 'gemname', '~>3.14' ) - Dies entspricht funktional der Verwendung von gem 'gemname', '>=3.14', '<4' . Mit anderen Worten, nur die Zahl nach der letzten Periode darf sich erhöhen.

Als Best Practice: Sie könnte eine der Ruby - Version Management - Bibliotheken wie verwenden möchten rbenv oder rvm . Über diese Bibliotheken können Sie verschiedene Versionen von Ruby-Laufzeiten und Edelsteinen entsprechend installieren. Wenn Sie also in einem Projekt arbeiten, ist dies besonders praktisch, da die meisten Projekte mit einer bekannten Ruby-Version codiert sind.

Gem Installation von github / filesystem

Sie können einen Edelstein von Github oder Dateisystem installieren. Wenn der Edelstein von git ausgecheckt wurde oder bereits im Dateisystem vorhanden ist, können Sie ihn mit installieren

gem install --local path_to_gem/filename.gem

Edelstein von Github installieren. Laden Sie die Quellen von Github herunter

mkdir newgem
cd newgem
git clone https://urltogem.git

Baue den Edelstein

gem build GEMNAME.gemspec
gem install gemname-version.gem

Überprüfen, ob ein erforderlicher Juwel im Code installiert ist

Um zu überprüfen, ob ein erforderlicher Edelstein installiert ist, können Sie in Ihrem Code Folgendes verwenden (am Beispiel von nokogiri):

begin
  found_gem = Gem::Specification.find_by_name('nokogiri')
  require 'nokogiri'
  ....
  <the rest of your code>
rescue Gem::LoadError
end

Dies kann jedoch zu einer Funktion erweitert werden, die zum Einrichten der Funktionalität in Ihrem Code verwendet werden kann.

def gem_installed?(gem_name)
  found_gem = false
  begin
    found_gem = Gem::Specification.find_by_name(gem_name)
  rescue Gem::LoadError
     return false
  else
    return true
  end
end

Nun können Sie überprüfen, ob der benötigte Edelstein installiert ist, und eine Fehlermeldung drucken.

if gem_installed?('nokogiri')
  require 'nokogiri'
else
  printf "nokogiri gem required\n"
  exit 1
end

oder

if gem_installed?('nokogiri')
  require 'nokogiri'
else
  require 'REXML'
end

Gemfile und Bundler verwenden

Eine Gemfile ist die Standardmethode, um Abhängigkeiten in Ihrer Anwendung zu organisieren. Ein einfaches Gemfile sieht so aus:

source 'https://rubygems.org'

gem 'rack'
gem 'sinatra'
gem 'uglifier'

Sie können die Versionen des Edelsteins wie folgt angeben:

# Match except on point release. Use only 1.5.X
gem 'rack', '~>1.5.2'
# Use a specific version.
gem 'sinatra', '1.4.7'
# Use at least a version or anything greater.
gem 'uglifier', '>= 1.3.0'

Sie können Edelsteine ​​auch direkt aus einem Git-Repo ziehen:

# pull a gem from github
gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git'
# you can specify a sha
gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git', sha: '30d4fb468fd1d6373f82127d845b153f17b54c51'
# you can also specify a branch, though this is often unsafe
gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git', branch: 'master'

Sie können auch Edelsteine ​​gruppieren, je nachdem, wofür sie verwendet werden. Zum Beispiel:

group :development, :test do
    # This gem is only available in dev and test, not production.
    gem 'byebug'
end

Sie können angeben, auf welcher Plattform bestimmte Gems ausgeführt werden sollen, wenn Ihre Anwendung auf mehreren Plattformen ausgeführt werden muss. Zum Beispiel:

platform :jruby do
  gem 'activerecord-jdbc-adapter'
  gem 'jdbc-postgres'
end

platform :ruby do
  gem 'pg'
end

Um alle Edelsteine ​​aus einem Gemfile zu installieren, gehen Sie folgendermaßen vor:

gem install bundler
bundle install

Bundler / Inline (Bundler v1.10 und höher)

Manchmal müssen Sie ein Skript für jemanden erstellen, wissen aber nicht, was er auf seinem Rechner hat. Gibt es alles, was dein Skript braucht? Keine Sorgen machen. Bundler hat eine großartige Funktion, die in Line aufgerufen wird.

Es stellt eine gemfile Methode gemfile Bevor das Skript ausgeführt wird, lädt es herunter und benötigt alle erforderlichen Edelsteine. Ein kleines Beispiel:

require 'bundler/inline' #require only what you need

#Start the bundler and in it use the syntax you are already familiar with
gemfile(true) do 
  source 'https://rubygems.org'
        gem 'nokogiri', '~> 1.6.8.1'
        gem 'ruby-graphviz'
end


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow