Zoeken…


Opmerkingen

Gemfile documentatie

Voor projecten die naar verwachting zullen groeien, is het een goed idee om commentaar toe te voegen aan je Gemfile . Op die manier weet je zelfs in grote opstellingen wat elke edelsteen doet, zelfs als de naam niet voor zichzelf spreekt en je hem 2 jaar geleden hebt toegevoegd.

Dit kan u ook helpen herinneren waarom u een bepaalde versie hebt gekozen en bijgevolg de versievereiste later opnieuw te evalueren.

Voorbeelden:

# temporary downgrade for TeamCity
gem 'rake', '~> 10.5.0'
# To upload invoicing information to payment provider
gem 'net-sftp'

Wat is een juweeltje?

Een juweel is het equivalent van een plug-in of een extensie voor de programmeertaal robijn.

Om precies te zijn, zelfs rails is niets meer dan een juweeltje. Veel edelstenen zijn gebouwd op rails of andere edelstenen (ze zijn afhankelijk van deze edelsteen) of staan op zichzelf.

In uw Rails-project

Gemfile

Voor uw Rails-project hebt u een bestand met de naam Gemfile . Hier kunt u edelstenen toevoegen die u in uw project wilt opnemen en gebruiken. Eenmaal toegevoegd moet je de edelsteen installeren met behulp van de bundler (zie de sectie Bundler).

Gemfile.lock

Zodra je dit hebt gedaan, wordt je Gemfile.lock bijgewerkt met je nieuw toegevoegde edelstenen en hun afhankelijkheden. Dit bestand vergrendelt je gebruikte edelstenen zodat ze die specifieke versie gebruiken die in dat bestand is aangegeven.

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)

Dit voorbeeld is voor de edelsteen devise . In Gemfile.lock versie 4.0.3 gedeclareerd om aan te geven wanneer u uw project op een andere machine of op uw productieserver installeert welke gespecificeerde versie moet worden gebruikt.

Ontwikkeling

Ofwel een enkele persoon, een groep of een hele gemeenschap werkt aan en onderhoudt een juweeltje. Gedaan werk wordt meestal vrijgegeven nadat bepaalde issues zijn opgelost of features zijn toegevoegd.

Meestal volgen de releases het Semantic Versioning 2.0.0- principe.

Bundler

De eenvoudigste manier om edelstenen te hanteren en te beheren is door bundler . Bundler is een pakketbeheerder vergelijkbaar met prieel.

Om bundler te gebruiken, moet u deze eerst installeren.

gem install bundler

Nadat je de bundler in gebruik hebt, hoef je alleen maar edelstenen aan je Gemfile toe te Gemfile en te rennen

bundle

in uw terminal. Hiermee worden uw nieuw toegevoegde edelstenen in uw project geïnstalleerd. Mocht er zich een probleem voordoen, dan krijgt u een melding in uw terminal.

Als u meer informatie wilt, raad ik u aan de documenten te bekijken .

Gemfiles

Om te beginnen hebben gemfiles minimaal één bron nodig, in de vorm van de URL voor een RubyGems-server.

Genereer een Gemfile met de standaardbron rubygems.org door bundle init . Gebruik https zodat uw verbinding met de server wordt geverifieerd met SSL.

source 'https://rubygems.org'

Verklaar vervolgens de edelstenen die u nodig hebt, inclusief versienummers.

gem 'rails', '4.2.6'
gem 'rack',  '>=1.1'
gem 'puma',  '~>3.0'

De meeste versiespecificaties, zoals> = 1.0, zijn zelfverklarend. De aanduiding ~> heeft een speciale betekenis. ~> 2.0.3 is identiek aan> = 2.0.3 en <2.1. ~> 2.1 is identiek aan> = 2.1 en <3.0. ~> 2.2.beta komt overeen met pre-releaseversies zoals 2.2.beta.12.

Git-opslagplaatsen zijn ook geldige edelsteenbronnen, zolang de repo een of meer geldige edelstenen bevat. Geef op wat u wilt uitchecken met :tag :branch of :ref . De standaardinstelling is de master tak.

gem 'nokogiri', :git => 'https://github.com/sparklemotion/nokogiri', :branch => 'master'

Als u een uitgepakte edelsteen rechtstreeks uit het bestandssysteem wilt gebruiken, stelt u eenvoudig de optie: pad in op het pad met de bestanden van de edelsteen.

gem 'extracted_library', :path => './vendor/extracted_library'

Afhankelijkheden kunnen in groepen worden geplaatst. Groepen kunnen worden genegeerd op install-tijd (met behulp van --without ) of vereist is in een keer (met behulp van Bundler.require ).

gem 'rails_12factor', group: :production

group :development, :test do
  gem 'byebug'
  gem 'web-console', '~> 2.0'
  gem 'spring'
  gem 'dotenv-rails'
end

U kunt de vereiste versie van Ruby in de Gemfile opgeven met ruby . Als de Gemfile op een andere Ruby-versie is geladen, zal Bundler een uitzondering met een toelichting maken.

ruby '2.3.1'

Gemsets

Als u RVM(Ruby Version Manager) is het gebruik van een gemset voor elk project een goed idee. Een gemset is gewoon een container die je kunt gebruiken om edelstenen van elkaar te houden. Door een gemset per project te maken, kunt u edelstenen (en edelsteenversies) voor één project wijzigen zonder al uw andere projecten te breken. Elk project hoeft zich alleen zorgen te maken over zijn eigen edelstenen.

RVM biedt (> = 0.1.8) een @global gemset per ruby tolk. Edelstenen die u installeert op de @global gemset voor een bepaalde ruby, zijn beschikbaar voor alle andere edelsteensets die u in combinatie met die ruby maakt. Dit is een goede manier om al uw projecten dezelfde geïnstalleerde parel te laten delen voor een specifieke robijnrode tolkinstallatie.

Gemsets maken

Stel dat u al ruby-2.3.1 geïnstalleerd en dat u deze hebt geselecteerd met deze opdracht:

rvm use ruby-2.3.1

Nu om gemset voor deze robijnversie te maken:

rvm gemset create new_gemset

waarbij de new_gemset de naam van gemset is. Om de lijst met beschikbare edelsteensets voor een robijnrode versie te bekijken:

rvm gemset list

om de edelstenen van alle robijnrode versies te vermelden:

rvm gemset list_all

om een gemset uit de lijst te gebruiken (stel dat new_gemset de gemset is die ik wil gebruiken):

rvm gemset use new_gemset

u kunt ook de robijnversie met de gemset opgeven als u naar een andere robijnversie wilt overschakelen:

rvm use ruby-2.1.1@new_gemset

om een standaard gemset voor een bepaalde robijnversie op te geven:

rvm use 2.1.1@new_gemset --default

om alle geïnstalleerde edelstenen uit een gemset te verwijderen, kun je deze leegmaken door:

rvm gemset empty new_gemset

om een gemset van de ene robijn naar de andere te kopiëren, kun je het doen door:

rvm gemset copy 2.1.1@rails4 2.1.2@rails4

een gemset verwijderen:

rvm gemset delete new_gemset

om de huidige gemset-naam te zien:

rvm gemset name

om een edelsteen in de wereldwijde edelsteen te installeren:

rvm @global do gem install ...

Gemsets initialiseren tijdens Ruby-installaties

Wanneer u een nieuwe robijn installeert, maakt RVM niet alleen twee edelsteensets (de standaard, lege edelsteen en de globale edelsteen), maar gebruikt het ook een aantal door de gebruiker bewerkbare bestanden om te bepalen welke edelstenen u moet installeren.

Werken in ~/.rvm/gemsets , zoekt rvm naar global.gems en default.gems met behulp van een boomhiërachie op basis van de ruby-reeks die wordt geïnstalleerd. Aan de hand van het voorbeeld van ree-1.8.7-p2010.02 zal rvm de volgende bestanden controleren (en importeren uit):

~/.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

Als u bijvoorbeeld ~/.rvm/gemsets/global.gems hebt bewerkt door deze twee regels toe te voegen:

bundler
awesome_print

elke keer dat u een nieuwe robijn installeert, worden deze twee edelstenen in uw wereldwijde gemset geïnstalleerd. default.gems en global.gems bestanden worden meestal overschreven tijdens de update van rvm.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow