Ruby Language
Gem Användning
Sök…
Installera rubin ädelstenar
Den här guiden antar att du redan har Ruby installerat. Om du använder Ruby < 1.9
måste du installera RubyGems manuellt eftersom det inte kommer att inkluderas naturligt .
För att installera en rubinpärla, ange kommandot:
gem install [gemname]
Om du arbetar med ett projekt med en lista över pärlberoende, kommer dessa att listas i en fil med namnet Gemfile
. För att installera en ny pärla i projektet, lägg till följande kodrad i Gemfile
:
gem 'gemname'
Denna Gemfile
används av Bundler-pärla för att installera beroenden som ditt projekt kräver, men det betyder dock att du måste installera Bundler först genom att köra (om du inte redan har gjort det):
gem install bundler
Spara filen och kör sedan kommandot:
bundle install
Ange versioner
Versionsnumret kan anges på kommandot live med flaggan -v
, till exempel:
gem install gemname -v 3.14
När du specificerar Gemfile
i en Gemfile
har du flera alternativ tillgängliga:
- Ingen version specificerad (
gem 'gemname')
- Installerar den senaste versionen som är kompatibel med andra ädelstenar iGemfile
. - Exakt version specificerad (
gem 'gemname', '3.14'
) - Försöker endast installera version3.14
(och misslyckas om detta är oförenligt med andra ädelstenar iGemfile
). - Optimistiskt minimumversionsnummer (
gem 'gemname', '>=3.14'
) - Försöker endast installera den senaste versionen som är kompatibel med andra ädelstenar iGemfile
, och misslyckas om ingen version större än eller lika med3.14
är kompatibel. Operatören>
kan också användas. - Pessimistisk minimversionsnummer (
gem 'gemname', '~>3.14'
) - Detta är funktionellt ekvivalent med att användagem 'gemname', '>=3.14', '<4'
. Med andra ord, endast antalet efter den sista perioden får öka.
Som en bästa praxis : Du kanske vill använda ett av Ruby- versionhanteringsbibliotek som rbenv eller rvm . Genom dessa bibliotek kan du installera olika versioner av Ruby runtimes och ädelstenar i enlighet därmed. Så när du arbetar i ett projekt kommer detta att vara särskilt praktiskt eftersom de flesta av projekten är kodade mot en känd Ruby-version.
Gem installation från github / filsystem
Du kan installera en pärla från github eller filsystem. Om pärlan har checkats ut från git eller på något sätt redan i filsystemet, kan du installera den med
gem install --local path_to_gem/filename.gem
Installera pärla från github. Ladda ner källorna från github
mkdir newgem
cd newgem
git clone https://urltogem.git
Bygg pärla
gem build GEMNAME.gemspec
gem install gemname-version.gem
Kontrollera om en nödvändig pärla är installerad från koden
För att kontrollera om en obligatorisk pärla är installerad, från din kod, kan du använda följande (med användning av nokogiri som ett exempel):
begin
found_gem = Gem::Specification.find_by_name('nokogiri')
require 'nokogiri'
....
<the rest of your code>
rescue Gem::LoadError
end
Detta kan emellertid utökas till en funktion som kan användas för att ställa in funktionalitet i din kod.
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
Nu kan du kontrollera om den nödvändiga pärlan är installerad och skriva ut ett felmeddelande.
if gem_installed?('nokogiri')
require 'nokogiri'
else
printf "nokogiri gem required\n"
exit 1
end
eller
if gem_installed?('nokogiri')
require 'nokogiri'
else
require 'REXML'
end
Med hjälp av en Gemfile och Bundler
En Gemfile
är det vanliga sättet att organisera beroenden i din applikation. En grundläggande Gemfile kommer att se ut så här:
source 'https://rubygems.org' gem 'rack' gem 'sinatra' gem 'uglifier'
Du kan ange vilka versioner av pärla du vill ha på följande sätt:
# 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'
Du kan också dra gems direkt från en git repo:
# 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'
Du kan också gruppera ädelstenar beroende på vad de används för. Till exempel:
group :development, :test do # This gem is only available in dev and test, not production. gem 'byebug' end
Du kan ange vilken plattform vissa ädelstenar ska köras om din ansökan måste kunna köras på flera plattformar. Till exempel:
platform :jruby do gem 'activerecord-jdbc-adapter' gem 'jdbc-postgres' end platform :ruby do gem 'pg' end
Så här installerar du alla ädelstenar från en Gemfile:
gem install bundler bundle install
Bundler / inline (bundler v1.10 och senare)
Ibland måste du skapa ett manus till någon men du är inte säker på vad han har på sin maskin. Finns det allt som ditt skript behöver? Oroa dig inte. Bundler har en fantastisk funktion som kallas i rad.
Det tillhandahåller en gemfile
metod och innan skriptet körs hämtar det och kräver alla nödvändiga ädelstenar. Ett litet exempel:
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