Odpowiedzi:
To nie jest wyłącznie odpowiedź na Twoje pytanie dotyczące instalowania .gem
pakietów, ale możesz określić wszystkie rodzaje lokalizacji na podstawie klejnotów, edytując plik Gemfile .
:path
atrybutu spowoduje zainstalowanie klejnotu z tej ścieżki na komputerze lokalnym.gem "foreman", path: "/Users/pje/my_foreman_fork"
:git
atrybutu spowoduje zainstalowanie klejnotu ze zdalnego repozytorium git.gem "foreman", git: "git://github.com/pje/foreman.git"
# ...or at a specific SHA-1 ref
gem "foreman", git: "git://github.com/pje/foreman.git", ref: "bf648a070c"
# ...or branch
gem "foreman", git: "git://github.com/pje/foreman.git", branch: "jruby"
# ...or tag
gem "foreman", git: "git://github.com/pje/foreman.git", tag: "v0.45.0"
(Jak @JHurrah wspomniał w swoim komentarzu .)
gem "foreman", :git => "https://github.com/pje/foreman.git"
Wydaje się, że pakiet nie może używać plików .gem po wyjęciu z pudełka. Wskazanie: path do katalogu zawierającego pliki .gem nie działa. Niektórzy sugerowali, aby w tym celu skonfigurować lokalny serwer gem (geminabox, stickler).
Jednak okazało się, że znacznie prostsze jest użycie lokalnego „serwera” gemów z systemu plików: po prostu umieść swoje pliki .gem w lokalnym katalogu, a następnie użyj „gem generation_index”, aby uczynić go repozytorium Gem
mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index
Na koniec wskaż pakiet do tej lokalizacji, dodając następujący wiersz do pliku Gemfile
source "file://path/to/repo"
Jeśli zaktualizujesz klejnoty w repozytorium, pamiętaj, aby ponownie wygenerować indeks.
gem server
ani nie chciałem hostować całego projektu, tylko plik .gem.
source "file://#{File.expand_path('.')}/chef-11.10.0.dev.2"
Could not fetch specs from file://Users/nakilon/....../
Domyślnie Bundler najpierw sprawdzi twój system i jeśli nie może znaleźć klejnotu, użyje źródeł określonych w twoim Gemfile.
Możesz zmusić pakera do korzystania z wdrażanych klejnotów za pomocą opcji „pakiet” i „instalacja pakietowa - lokalna”
Na komputerze deweloperskim:
bundle install
(Instaluje wymagane klejnoty i tworzy Gemfile.lock)
bundle package
(Przechowuje klejnoty u sprzedawcy / pamięci podręcznej)
Na serwerze:
bundle install --local
(--lokalne oznacza „użyj klejnotów od sprzedawcy / pamięci podręcznej”)
bundle install
Następnie skopiuj plik klejnotu do sprzedawcy / pamięci podręcznej , dodaj klejnot z powrotem do pliku klejnotu i wykonaj bundle install --local
bundle package
to świetna sugestia, nawet teraz, trzy lata później. Jeśli twoja wersja Bundlera jest starsza niż 2.0 (jeszcze nie została wydana w chwili pisania tego tekstu), będziesz musiał użyć, bundle package --all
jeśli chcesz dołączyć klejnoty z zależnościami path
lub git
. Jeśli jednak wykryje takie zależności, wyświetli pomocne przypomnienie.
--local
dokumentacją: „Zauważ, że jeśli na rubygems.org istnieje odpowiedni klejnot specyficzny dla platformy, nie zostanie on znaleziony”.
Dodawanie .gem
do vendor/cache
wydaje się działać. Żadne opcje nie są wymagane w Gemfile
.
Wydaje mi się, że najłatwiej jest uruchomić własny serwer gemów przy użyciu geminabox
Zobacz te proste instrukcje .