Відповіді:
Це не зовсім відповідь на ваше запитання про встановлення .gem
пакетів, але ви можете вказати всі типи місцеположень на основі gem-by-gem, відредагувавши свій Gemfile .
:path
атрибута встановить дорогоцінний камінь із цього шляху на вашій локальній машині.gem "foreman", path: "/Users/pje/my_foreman_fork"
:git
атрибут встановить дорогоцінний камінь із віддаленого сховища 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"
(Як згадував @JHurrah у своєму коментарі .)
gem "foreman", :git => "https://github.com/pje/foreman.git"
Здається, постачальник не може використовувати .gem файли поза коробкою. Вказівка на: шлях до каталогу, що містить файли .gem, не працює. Деякі люди запропонували для цього встановити локальний сервер дорогоцінних каменів (geminabox, stickler).
Однак те, що я виявилося набагато простішим, - це використовувати локальний дорогоцінний "сервер" з файлової системи: просто покладіть свої файли .gem у локальний каталог, а потім використовуйте "gem generator_index", щоб зробити його сховищем Gem
mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index
Нарешті, вкажіть постачальника на це місце, додавши наступний рядок у ваш Gemfile
source "file://path/to/repo"
Якщо ви оновлюєте дорогоцінні камені у сховищі, переконайтесь, що регенеруєте індекс.
gem server
не хотів розмістити весь проект, лише файл .gem.
source "file://#{File.expand_path('.')}/chef-11.10.0.dev.2"
Could not fetch specs from file://Users/nakilon/....../
За замовчуванням Bundler спочатку перевірить вашу систему, і якщо він не зможе знайти дорогоцінний камінь, він використовуватиме джерела, вказані у вашому Gemfile.
Ви можете змусити постачальника використовувати дорогоцінні камені, які ви розгортаєте, використовуючи "пакетний пакет" та "встановити пакет - місцевий"
На вашій розробці:
bundle install
(Встановлює потрібні дорогоцінні камені та робить Gemfile.lock)
bundle package
(Кешує дорогоцінні камені у постачальника / кеша)
На сервері:
bundle install --local
(- локальне означає "використовувати дорогоцінні камені від постачальника / кеша")
bundle install
сформуйте дорогоцінний файл перед тим, як зробити це, після цього скопіюйте gemfile у постачальника / кеша , додайте дорогоцінний камінь назад до gemfile та виконайте bundle install --local
bundle package
це чудова пропозиція навіть зараз, через три роки. Якщо ваша версія Bundler старша 2,0 (ще не випущена під час написання), вам потрібно буде скористатися, bundle package --all
якщо ви хочете включити дорогоцінні камені path
або git
залежності. Це допоможе вам нагадати, якщо виявить такі залежності.
--local
документів: "Зауважте, що якщо на rubygems.org існує відповідний дорогоцінний камінь, він не буде знайдений."
Додавання .gem
до vendor/cache
схоже на роботу. Не потрібні параметри в Gemfile
.
Мені було найпростіше запустити власний сервер дорогоцінних каменів за допомогою geminabox
Побачити ці прості інструкції .