Szukaj…


Uwagi

Dokumentacja Gemfile

W przypadku projektów, które mają wzrosnąć, dobrym pomysłem jest dodanie komentarzy do Gemfile . W ten sposób, nawet w dużych konfiguracjach, będziesz nadal wiedział, co robi każdy klejnot, nawet jeśli nazwa nie jest oczywista i dodałeś ją 2 lata temu.

Pomoże to również zapamiętać, dlaczego wybrałeś określoną wersję, a następnie ponownie ocenisz wymagania dotyczące wersji.

Przykłady:

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

Co to jest klejnot?

Klejnot jest odpowiednikiem wtyczki lub rozszerzenia języka programowania ruby.

Dokładnie mówiąc, nawet szyny to nic więcej niż klejnot. Wiele klejnotów jest zbudowanych na szynach lub innych klejnotach (zależą od tego klejnotu) lub są samodzielne.

W twoim projekcie Rails

Gemfile

Dla projektu Rails masz plik o nazwie Gemfile . Tutaj możesz dodać klejnoty, które chcesz uwzględnić i wykorzystać w swoim projekcie. Po dodaniu musisz zainstalować klejnot, korzystając z programu bundler (patrz sekcja Bundler).

Gemfile.lock

Gdy to zrobisz, Twój Gemfile.lock zostanie zaktualizowany o nowo dodane klejnoty i ich zależności. Ten plik blokuje używane klejnoty, więc używają określonej wersji zadeklarowanej w tym pliku.

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)

Ten przykład jest za gem devise . W Gemfile.lock zadeklarowano wersję 4.0.3 , aby podczas instalacji projektu na innym komputerze lub na serwerze produkcyjnym określić, której wersji użyć.

Rozwój

Albo jedna osoba, grupa lub cała społeczność pracuje i utrzymuje klejnot. Praca wykonywana jest zwykle uwalniane po pewne issues zostały ustalone lub features zostały dodane.

Zwykle wydania są zgodne z zasadą Semantic Versioning 2.0.0 .

Bundler

Najłatwiejszym sposobem obsługi i zarządzania klejnotami jest użycie bundler . Bundler jest menedżerem pakietów porównywalnym z altaną.

Aby użyć bundlera, musisz go najpierw zainstalować.

gem install bundler

Po skonfigurowaniu pakietu i wszystko, co musisz zrobić, to dodać klejnoty do Gemfile i uruchomić

bundle

w twoim terminalu. Spowoduje to zainstalowanie nowo dodanych klejnotów w projekcie. W przypadku pojawienia się problemu w terminalu pojawi się monit.

Jeśli jesteś zainteresowany bardziej szczegółowymi informacjami, sugeruję zajrzeć do dokumentacji .

Gemfiles

Na początek pliki gem wymagają co najmniej jednego źródła, w postaci adresu URL serwera RubyGems.

Wygeneruj plik Gemfile z domyślnym źródłem rubygems.org, uruchamiając bundle init . Użyj protokołu https, aby Twoje połączenie z serwerem zostało zweryfikowane za pomocą protokołu SSL.

source 'https://rubygems.org'

Następnie zadeklaruj klejnoty, których potrzebujesz, w tym numery wersji.

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

Większość specyfikatorów wersji, takich jak> = 1.0, nie wymaga wyjaśnień. Specyfikator ~> ma specjalne znaczenie. ~> 2.0.3 jest identyczny z> = 2.0.3 i <2.1. ~> 2.1 jest identyczne z> = 2.1 i <3.0. ~> 2.2.beta będzie pasować do wersji wstępnych, takich jak 2.2.beta.12.

Repozytoria Git są również prawidłowymi źródłami klejnotów, o ile repozytorium zawiera jeden lub więcej prawidłowych klejnotów. Określ, co chcesz sprawdzić za pomocą :tag :branch lub :ref . Domyślnie jest to master oddziału.

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

Jeśli chcesz użyć rozpakowanego klejnotu bezpośrednio z systemu plików, po prostu ustaw opcję: path na ścieżkę zawierającą pliki klejnotu.

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

Zależności można umieszczać w grupach. Grupy można zignorować w czasie instalacji (używając - --without ) lub wymagać jednocześnie (używając Bundler.require ).

gem 'rails_12factor', group: :production

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

Możesz podać wymaganą wersję Ruby w Gemfile za pomocą ruby . Jeśli Gemfile zostanie załadowany w innej wersji Ruby, Bundler zgłosi wyjątek z wyjaśnieniem.

ruby '2.3.1'

Gemsety

Jeśli używasz RVM(Ruby Version Manager) dobrym pomysłem jest użycie gemset dla każdego projektu. Zestaw gemset to tylko pojemnik, którego można użyć do oddzielenia klejnotów. Utworzenie gemset każdego projektu umożliwia zmianę klejnotów (i wersji klejnotów) dla jednego projektu bez przerywania wszystkich innych projektów. Każdy projekt musi martwić się tylko o własne klejnoty.

RVM zapewnia (> = 0.1.8) zestaw @global gemset na interpretera ruby. Klejnoty instalowane w @global gemset dla danego rubinu są dostępne dla wszystkich innych zestawów klejnotów tworzonych w związku z tym rubinem. Jest to dobry sposób, aby umożliwić wszystkim twoim projektom udostępnianie tego samego zainstalowanego klejnotu dla konkretnej instalacji interpretera ruby.

Tworzenie zestawów klejnotów

Załóżmy, że masz już zainstalowany ruby-2.3.1 i wybrałeś go za pomocą tego polecenia:

rvm use ruby-2.3.1

Teraz, aby utworzyć zestaw gem dla tej wersji ruby:

rvm gemset create new_gemset

gdzie new_gemset to nazwa zestawu gemset. Aby zobaczyć listę dostępnych zestawów klejnotów dla wersji ruby:

rvm gemset list

aby wyświetlić klejnoty wszystkich wersji ruby:

rvm gemset list_all

aby użyć zestawu gem z listy (załóżmy, że new_gemset to zestaw, którego chcę użyć):

rvm gemset use new_gemset

możesz także określić wersję ruby za pomocą zestawu gem, jeśli chcesz przejść do innej wersji ruby:

rvm use ruby-2.1.1@new_gemset

aby określić domyślny zestaw gem dla konkretnej wersji ruby:

rvm use 2.1.1@new_gemset --default

aby usunąć wszystkie zainstalowane klejnoty z zestawu, możesz go opróżnić poprzez:

rvm gemset empty new_gemset

aby skopiować zestaw gemów z jednego rubinu na inny, możesz to zrobić poprzez:

rvm gemset copy 2.1.1@rails4 2.1.2@rails4

aby usunąć zestaw:

rvm gemset delete new_gemset

aby zobaczyć aktualną nazwę zestawu gemset:

rvm gemset name

aby zainstalować klejnot w globalnym zestawie klejnotów:

rvm @global do gem install ...

Inicjowanie zestawów gemów podczas instalacji Ruby

Kiedy instalujesz nowy rubin, RVM nie tylko tworzy dwa zestawy klejnotów (domyślny, pusty zestaw klejnotów i zestaw globalny), ale także używa zestawu plików edytowalnych przez użytkownika, aby określić, które klejnoty zainstalować.

Praca w ~/.rvm/gemsets , Przeszukuje RVM dla global.gems i default.gems korzystających drzewo-hierarchię opartą na strunie ruby jest zainstalowany. Na przykładzie ree-1.8.7-p2010.02 rvm sprawdzi (i zaimportuje) następujące pliki:

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

Na przykład, jeśli edytowałeś ~/.rvm/gemsets/global.gems , dodając te dwa wiersze:

bundler
awesome_print

Za każdym razem, gdy instalujesz nowy rubin, te dwa klejnoty są instalowane w twoim globalnym zestawie. Pliki default.gems i global.gems są zwykle nadpisywane podczas aktualizacji rvm.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow