Ruby Language
Gem gebruik
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 deGemfile
. - Exacte versie opgegeven (
gem 'gemname', '3.14'
) - zal alleen proberen versie3.14
te installeren (en mislukken als dit niet compatibel is met andere edelstenen in deGemfile
). - Optimistisch minimum versienummer (
gem 'gemname', '>=3.14'
) - Zal alleen proberen de nieuwste versie te installeren die compatibel is met andere edelstenen in deGemfile
, en mislukt als geen versie groter dan of gelijk aan3.14
compatibel is. De operator>
kan ook worden gebruikt. - Pessimistisch minimum versienummer (
gem 'gemname', '~>3.14'
) - Dit is functioneel gelijk aan het gebruik vangem '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