Бундлер: как использовать без рельсов?
У меня есть проект с использованием огурца за пределами рельсов. Как загрузить драгоценные камни с версиями, указанными в моем gemfile?
Ответы
Ответ 1
Копаем веб-сайт Bundler:
Возможно, стоит проверить:
Bundler.io - Использование Bundler в вашем приложении
Bundler.io - Bundler.setup и Bundler.require
Являются ли bundle exec и требуют эквивалент 'bundler/setup'?
Ответ 2
Я только что узнал о способе заставить Bundler автоматически требовать зависимости от Gemfile. Добавьте этот код в начале программы Ruby с Gemfile:
require 'rubygems'
require 'bundler/setup'
Bundler.require
С Bundler.require нет необходимости явно требовать библиотеки/библиотеки, перечисленные в Gemfile.
Это решение от http://technotales.wordpress.com/2010/08/22/bundler-without-rails/
Честно говоря, я не уверен, нужна ли часть rubygems.
Ответ 3
Здесь простейший и самый простой подход:
-
bundler init
создаст Gemfile для вас.
- Укажите драгоценные камни в Gemfile.
- Добавьте в свой основной файл Ruby следующее:
require 'bundler/setup'
Bundler.require
- Запустите
bundler install
, чтобы установить драгоценные камни.
Дополнительную информацию можно (сейчас) найти на http://bundler.io.
Ответ 4
У Каспера есть довольно хороший ответ (несмотря на некоторую пассивную агрессивность), но я думаю, что недостающая часть для вас - bundle exec
. Когда вы запускаете команды $ rails ...
в командной строке, Rails использует связку для загрузки этих зависимостей/драгоценных камней. Например, Rake не по умолчанию, поэтому для запуска rake test
с использованием более старой версии огурца, чем в вашей системе, вы должны использовать bundle exec rake test
. Хорошая привычка всегда использовать $ bundle exec ...
, когда вы используете Bundler - он явный, вы всегда уверены, что используете правильные драгоценные камни, и это гарантирует, что вы не забудьте добавить зависимость к вашему Gemfile (т.е. вы нажимаете на другой сервер или другой разработчик, и у них возникают проблемы, потому что вы не заметили необходимости в том, что вы используете, но они этого не делают).