Ruby on Rails
Ädelsten
Sök…
Anmärkningar
Gemfile-dokumentation
För projekt som förväntas växa är det bra att lägga till kommentarer på din Gemfile
. På det sättet, även i stora inställningar, kommer du fortfarande att veta vad varje pärla gör även om namnet inte är självförklarande och du lagt till det för två år sedan.
Detta kan också hjälpa dig att komma ihåg varför du valde en viss version och följaktligen utvärdera versionskravet senare.
Exempel:
# temporary downgrade for TeamCity
gem 'rake', '~> 10.5.0'
# To upload invoicing information to payment provider
gem 'net-sftp'
Vad är en pärla?
En pärla motsvarar ett plugin eller ett tillägg för programmeringsspråket rubin.
Att vara exakt jämna räls är inget annat än en pärla. Många ädelstenar är byggda på skenor eller andra ädelstenar (de är beroende av nämnda pärla) eller är fristående.
I ditt Rails-projekt
Gemfile
För ditt Rails-projekt har du en fil som heter Gemfile
. Här kan du lägga till ädelstenar du vill inkludera och använda i ditt projekt. När du har lagt till måste du installera pärla med hjälp av bundler
(se avsnittet Bundler).
Gemfile.lock
När du har gjort detta kommer din Gemfile.lock
att uppdateras med dina nyligen tillagda ädelstenar och deras beroenden. Den här filen låser dina använda ädelstenar så att de använder den specifika versionen som deklareras i den filen.
GEM
remote: https://rubygems.org/
specs:
devise (4.0.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0, < 5.1)
responders
warden (~> 1.2.3)
Detta exempel är för pärla devise
. I Gemfile.lock
version 4.0.3
för att berätta när du installerar ditt projekt på en annan maskin eller på din produktionsserver vilken specifik version som ska användas.
Utveckling
Antingen en enda person, en grupp eller en hel gemenskap arbetar med och upprätthåller en pärla. Arbetet släpps vanligtvis efter att vissa issues
har åtgärdats eller features
har lagts till.
Vanligtvis följer utgåvorna Semantic Versioning 2.0.0- principen.
Bundler
Det enklaste sättet att hantera och hantera ädelstenar är att använda bundler
. Bundler är en paketansvarig som kan jämföras med bower.
För att använda paketet måste du först installera det.
gem install bundler
När du har bundler upp och kör allt du behöver göra är att lägga till ädelstenar till din Gemfile
och springa
bundle
i din terminal. Detta installerar dina nyligen tillagda ädelstenar till ditt projekt. Om ett problem skulle uppstå, skulle du få en snabbmeddelande i din terminal.
Om du är intresserad av mer information föreslår jag att du tittar på dokumenten .
Gemfiles
För att starta kräver gemfiles minst en källa, i form av webbadressen för en RubyGems-server.
Generera en Gemfile med standardkällan rubygems.org genom att köra bundle init
. Använd https så att din anslutning till servern verifieras med SSL.
source 'https://rubygems.org'
Förklara därefter de ädelstenar du behöver, inklusive versionnummer.
gem 'rails', '4.2.6'
gem 'rack', '>=1.1'
gem 'puma', '~>3.0'
De flesta versionspecifikationer, som> = 1.0, är självförklarande. Specifikatorn ~> har en speciell betydelse. ~> 2.0.3 är identisk med> = 2.0.3 och <2.1. ~> 2.1 är identisk med> = 2.1 och <3.0. ~> 2.2.beta kommer att matcha förversionsversioner som 2.2.beta.12.
Gitförvar är också giltiga juvelkällor, så länge repoen innehåller en eller flera giltiga ädelstenar. Ange vad du ska kolla in med :tag
:branch
eller :ref
. Standard är master
gren.
gem 'nokogiri', :git => 'https://github.com/sparklemotion/nokogiri', :branch => 'master'
Om du vill använda en opackad pärla direkt från filsystemet ställer du helt enkelt in alternativet: sökväg till sökvägen som innehåller pärlens filer.
gem 'extracted_library', :path => './vendor/extracted_library'
Beroende kan placeras i grupper. Grupper kan ignoreras vid installationstiden (med - --without
) eller krävs samtidigt (med Bundler.require
).
gem 'rails_12factor', group: :production
group :development, :test do
gem 'byebug'
gem 'web-console', '~> 2.0'
gem 'spring'
gem 'dotenv-rails'
end
Du kan ange önskad version av Ruby i Gemfile med ruby
. Om Gemfile laddas på en annan Ruby-version kommer Bundler att göra ett undantag med en förklaring.
ruby '2.3.1'
Gemsets
Om du använder RVM(Ruby Version Manager)
är det bra att använda en gemset
för varje projekt. En gemset
är bara en behållare du kan använda för att hålla ädelstenar åtskilda från varandra. gemset
skapa en gemset
per projekt kan du ändra ädelstenar (och pärlemorfärsversioner) för ett projekt utan att bryta alla andra projekt. Varje projekt behöver bara oroa sig för sina egna ädelstenar.
RVM
tillhandahåller (> = 0,1,8) en @global gemset
per rubin tolk. Ädelstenar som du installerar på @global gemset
för en given rubin är tillgängliga för alla andra ädelstenar du skapar i samband med den rubinen. Detta är ett bra sätt att låta alla dina projekt dela samma installerade pärla för en specifik rubin-tolkinstallation.
Skapa pärlor
Anta att du redan har ruby-2.3.1
installerat och du har valt det med det här kommandot:
rvm use ruby-2.3.1
Nu för att skapa gemset för denna rubinversion:
rvm gemset create new_gemset
där new_gemset
är namnet på gemset. För att se listan över tillgängliga pärlor för en rubinversion:
rvm gemset list
för att lista ädelstenar i alla rubinversioner:
rvm gemset list_all
att använda en gemset från listan (antag att new_gemset
är det gemset jag vill använda):
rvm gemset use new_gemset
Du kan också ange rubinversionen med gemset om du vill växla till någon annan rubinversion:
rvm use ruby-2.1.1@new_gemset
för att ange ett standard-gemset för en viss rubinversion:
rvm use 2.1.1@new_gemset --default
för att ta bort alla installerade ädelstenar från en gemset kan du tömma det genom:
rvm gemset empty new_gemset
för att kopiera en gemset från en rubin till en annan kan du göra det genom att:
rvm gemset copy 2.1.1@rails4 2.1.2@rails4
för att ta bort ett gemset:
rvm gemset delete new_gemset
för att se det aktuella gemset-namnet:
rvm gemset name
för att installera en pärla i det globala gemset:
rvm @global do gem install ...
Initiera Gemsets under Ruby Installs
När du installerar en ny rubin skapar RVM inte bara två ädelstenar (standard, tomt gemset och det globala gemset), det använder också en uppsättning användarredigerbara filer för att avgöra vilka ädelstenar som ska installeras.
Arbetar i ~/.rvm/gemsets
, rvm söker efter global.gems
och default.gems
hjälp av en träd-hierachy baserad på rubinsträngen som installeras. Med exemplet med ree-1.8.7-p2010.02
kommer rvm att kontrollera (och importera från) följande filer:
~/.rvm/gemsets/ree/1.8.7/p2010.02/global.gems
~/.rvm/gemsets/ree/1.8.7/p2010.02/default.gems
~/.rvm/gemsets/ree/1.8.7/global.gems
~/.rvm/gemsets/ree/1.8.7/default.gems
~/.rvm/gemsets/ree/global.gems
~/.rvm/gemsets/ree/default.gems
~/.rvm/gemsets/global.gems
~/.rvm/gemsets/default.gems
Om du till exempel redigerade ~/.rvm/gemsets/global.gems
genom att lägga till dessa två rader:
bundler
awesome_print
varje gång du installerar en ny rubin, installeras dessa två ädelstenar i din globala gemset. default.gems
och global.gems
filer skrivs vanligtvis under uppdatering av rvm.