Ruby Language
Wykorzystanie klejnotów
Szukaj…
Instalowanie rubinowych klejnotów
Ten przewodnik zakłada, że masz już zainstalowany Ruby. Jeśli używasz Ruby < 1.9
, musisz ręcznie zainstalować RubyGems, ponieważ nie będzie on dołączany natywnie .
Aby zainstalować rubinowy klejnot, wpisz polecenie:
gem install [gemname]
Jeśli pracujesz nad projektem z listą zależności od klejnotów, zostaną one wymienione w pliku o nazwie Gemfile
. Aby zainstalować nowy klejnot w projekcie, dodaj następujący wiersz kodu w Gemfile
:
gem 'gemname'
Ten Gemfile
jest używany przez klejnot Bundlera do instalowania zależności wymaganych przez projekt, co oznacza jednak, że najpierw musisz zainstalować Bundler, uruchamiając (jeśli jeszcze tego nie zrobiłeś):
gem install bundler
Zapisz plik, a następnie uruchom polecenie:
bundle install
Określanie wersji
Numer wersji można podać w poleceniu na żywo za pomocą opcji -v
, na przykład:
gem install gemname -v 3.14
Podczas określania numerów wersji w pliku Gemfile
dostępnych jest kilka opcji:
- Nie określono wersji (
gem 'gemname')
- Zainstaluje najnowszą wersję, która jest kompatybilna z innymi klejnotami wGemfile
. - Określona wersja dokładna (
gem 'gemname', '3.14'
) -gem 'gemname', '3.14'
próbę zainstalowania wersji3.14
(i zakończy się niepowodzeniem, jeśli nie będzie kompatybilna z innymi klejnotami wGemfile
). - Optymistyczny minimalny numer wersji (
gem 'gemname', '>=3.14'
) -gem 'gemname', '>=3.14'
próbę zainstalowania najnowszej wersji, która jest kompatybilna z innymi klejnotami wGemfile
, i zawiedzie, jeśli żadna wersja większa lub równa3.14
jest kompatybilna. Można także użyć operatora>
. - Pesymistyczny minimalny numer wersji (
gem 'gemname', '~>3.14'
) - jest to funkcjonalnie równoważne z użyciemgem 'gemname', '>=3.14', '<4'
. Innymi słowy, tylko liczba po ostatnim okresie może wzrosnąć.
Jako najlepszą praktykę : możesz użyć jednej z bibliotek zarządzania wersjami Ruby, takich jak rbenv lub rvm . Za pomocą tych bibliotek można odpowiednio instalować różne wersje środowiska uruchomieniowego i klejnotów Ruby. Tak więc, podczas pracy w projekcie, będzie to szczególnie przydatne, ponieważ większość projektów jest kodowana względem znanej wersji Ruby.
Instalacja Gem z systemu plików github /
Możesz zainstalować klejnot z github lub systemu plików. Jeśli klej został wypisany z git lub jakoś już w systemie plików, możesz go zainstalować za pomocą
gem install --local path_to_gem/filename.gem
Instalowanie klejnotu z github. Pobierz źródła z github
mkdir newgem
cd newgem
git clone https://urltogem.git
Zbuduj klejnot
gem build GEMNAME.gemspec
gem install gemname-version.gem
Sprawdzanie, czy wymagany klejnot jest zainstalowany z poziomu kodu
Aby sprawdzić, czy wymagany klejnot jest zainstalowany, w kodzie możesz użyć następujących (na przykład nokogiri):
begin
found_gem = Gem::Specification.find_by_name('nokogiri')
require 'nokogiri'
....
<the rest of your code>
rescue Gem::LoadError
end
Można to jednak rozszerzyć na funkcję, której można użyć do skonfigurowania funkcji w kodzie.
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
Teraz możesz sprawdzić, czy wymagany klejnot jest zainstalowany, i wydrukować komunikat o błędzie.
if gem_installed?('nokogiri')
require 'nokogiri'
else
printf "nokogiri gem required\n"
exit 1
end
lub
if gem_installed?('nokogiri')
require 'nokogiri'
else
require 'REXML'
end
Korzystanie z Gemfile i Bundlera
Gemfile
to standardowy sposób organizowania zależności w aplikacji. Podstawowy plik Gemfile będzie wyglądał następująco:
source 'https://rubygems.org' gem 'rack' gem 'sinatra' gem 'uglifier'
Możesz określić wersje klejnotu, jak chcesz:
# 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'
Możesz także wyciągać klejnoty bezpośrednio z repozytorium git:
# 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'
Możesz także grupować klejnoty w zależności od tego, do czego są używane. Na przykład:
group :development, :test do # This gem is only available in dev and test, not production. gem 'byebug' end
Możesz określić, na której platformie powinny działać niektóre klejnoty, jeśli aplikacja musi działać na wielu platformach. Na przykład:
platform :jruby do gem 'activerecord-jdbc-adapter' gem 'jdbc-postgres' end platform :ruby do gem 'pg' end
Aby zainstalować wszystkie klejnoty z Gemfile:
gem install bundler bundle install
Bundler / inline (bundler v1.10 i nowszy)
Czasami musisz stworzyć skrypt dla kogoś, ale nie jesteś pewien, co on ma na swoim komputerze. Czy jest wszystko, czego potrzebuje twój skrypt? Nie martwić się. Bundler ma wielką funkcję wywoływaną w linii.
Zapewnia metodę gemfile
, a przed uruchomieniem skryptu pobiera i wymaga wszystkich niezbędnych klejnotów. Mały przykład:
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