У меня есть проект с использованием огурца за пределами рельсов. Как загрузить драгоценные камни с версиями, указанными в моем gemfile?
Бундлер: как использовать без рельсов?
Ответ 1
Копаем веб-сайт Bundler:
- Создайте
Gemfile
(запуститеbundle init
, чтобы создать скелетGemfile
) -
bundle install
-
В вашем приложении:
# Only needed for ruby 1.8.x require 'rubygems' # The part that activates bundler in your app require 'bundler/setup' # require your gems as usual require 'some_gem' # ...or require all the gems in one statement Bundler.require
Возможно, стоит проверить:
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 (т.е. вы нажимаете на другой сервер или другой разработчик, и у них возникают проблемы, потому что вы не заметили необходимости в том, что вы используете, но они этого не делают).