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 w Gemfile .
  • Określona wersja dokładna ( gem 'gemname', '3.14' ) - gem 'gemname', '3.14' próbę zainstalowania wersji 3.14 (i zakończy się niepowodzeniem, jeśli nie będzie kompatybilna z innymi klejnotami w Gemfile ).
  • Optymistyczny minimalny numer wersji ( gem 'gemname', '>=3.14' ) - gem 'gemname', '>=3.14' próbę zainstalowania najnowszej wersji, która jest kompatybilna z innymi klejnotami w Gemfile , i zawiedzie, jeśli żadna wersja większa lub równa 3.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życiem gem '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


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