Zoeken…


Ruby edelstenen installeren

In deze gids wordt ervan uitgegaan dat Ruby al is geïnstalleerd. Als u Ruby < 1.9 gebruikt, moet u RubyGems handmatig installeren, omdat dit niet standaard wordt meegeleverd .

Voer de opdracht in om een robijn edelsteen te installeren:

gem install [gemname]

Als u aan een project werkt met een lijst met afhankelijkheden van edelstenen, worden deze vermeld in een bestand met de naam Gemfile . Om een nieuwe edelsteen in het project te installeren, voegt u de volgende coderegel toe aan de Gemfile :

gem 'gemname'

Deze Gemfile wordt gebruikt door de Bundler-edelsteen om afhankelijkheden te installeren die uw project vereist, dit betekent echter dat u eerst Bundler moet installeren door te starten (als u dat nog niet heeft gedaan):

gem install bundler

Sla het bestand op en voer vervolgens de opdracht uit:

bundle install

Versies specificeren

Het versienummer kan worden opgegeven in de opdracht live, met de vlag -v , zoals:

gem install gemname -v 3.14

Wanneer u versienummers in een Gemfile , zijn er verschillende opties beschikbaar:

  • Geen versie opgegeven ( gem 'gemname') - installeert de nieuwste versie die compatibel is met andere edelstenen in de Gemfile .
  • Exacte versie opgegeven ( gem 'gemname', '3.14' ) - zal alleen proberen versie 3.14 te installeren (en mislukken als dit niet compatibel is met andere edelstenen in de Gemfile ).
  • Optimistisch minimum versienummer ( gem 'gemname', '>=3.14' ) - Zal alleen proberen de nieuwste versie te installeren die compatibel is met andere edelstenen in de Gemfile , en mislukt als geen versie groter dan of gelijk aan 3.14 compatibel is. De operator > kan ook worden gebruikt.
  • Pessimistisch minimum versienummer ( gem 'gemname', '~>3.14' ) - Dit is functioneel gelijk aan het gebruik van gem 'gemname', '>=3.14', '<4' . Met andere woorden, alleen het aantal na de laatste periode mag toenemen.

Als best practice : u wilt misschien een van de Ruby-versiebeheerbibliotheken gebruiken, zoals rbenv of rvm . Via deze bibliotheken kunt u verschillende versies van Ruby-runtimes en edelstenen dienovereenkomstig installeren. Dus wanneer je in een project werkt, is dit vooral handig omdat de meeste projecten zijn gecodeerd tegen een bekende Ruby-versie.

Gem installatie van github / bestandssysteem

Je kunt een juweel installeren van github of een bestandssysteem. Als het juweel is uitgecheckt bij git of op een of andere manier al in het bestandssysteem, kun je het installeren met

gem install --local path_to_gem/filename.gem

Gem installeren vanaf github. Download de bronnen van github

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

Bouw de edelsteen

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

Controleren of een vereist edelsteen vanuit de code is geïnstalleerd

Om te controleren of een vereist juweel is geïnstalleerd, vanuit je code, kun je het volgende gebruiken (met nokogiri als voorbeeld):

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

Dit kan echter verder worden uitgebreid tot een functie die kan worden gebruikt bij het instellen van functionaliteit binnen uw code.

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

U kunt nu controleren of het gewenste juweel is geïnstalleerd en een foutbericht afdrukken.

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

of

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

Gemfile en bundler gebruiken

Een Gemfile is de standaardmanier om afhankelijkheden in uw toepassing te organiseren. Een eenvoudige Gemfile ziet er zo uit:

source 'https://rubygems.org'

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

Je kunt de gewenste versies van de edelsteen als volgt opgeven:

# 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'

Je kunt ook edelstenen rechtstreeks uit een git repo halen:

# 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'

Je kunt ook edelstenen groeperen, afhankelijk van waar ze voor worden gebruikt. Bijvoorbeeld:

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

U kunt opgeven op welk platform bepaalde edelstenen moeten worden uitgevoerd als uw toepassing op meerdere platforms moet kunnen worden uitgevoerd. Bijvoorbeeld:

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

platform :ruby do
  gem 'pg'
end

Ga als volgt te werk om alle edelstenen van een Gemfile te installeren:

gem install bundler
bundle install

Bundler / inline (bundler v1.10 en hoger)

Soms moet je een script voor iemand maken, maar je weet niet zeker wat hij op zijn machine heeft. Is er alles wat je script nodig heeft? Maak je geen zorgen. Bundler heeft een geweldige functie die in de rij wordt genoemd.

Het biedt een gemfile methode en voordat het script wordt uitgevoerd, wordt het gedownload en zijn alle benodigde edelstenen vereist. Een klein voorbeeld:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow