• Ruby on Rails

    И еще одна шпаргалка по Bundler в Rails 3

    Bundler в Rails - это основной механизм отслеживания и управления зависимостями в загружаемых приложениями gem'ах. При этом сам Bundler - это тоже gem, но он не требует явной установки в Rails 3, так как сам является gem'ом от которого зависит Rails 3 версии.

    Gemfile приложения - манифест файл, находящийся в корне Rails приложения, в котором и перечислены все необходимые для приложения gem'ы, которые по умолчанию не входят в сами Рельсы. Если в приложении нам нужен еще один gem, то мы просто указываем это в нашем Gemfile'е. Именно с этим файлом в первую очередь и работает Bundler для того, чтобы понять какие gem'ы нужны приложению и от каких gem'ов зависят сами подключаемые gem'ы. Запуск работы Bundler'а происходит так:

    $ bundle install

    При этом Вundler считывает наименования и версии gem'ов из Gemfile'а, строит полное дерево зависимостей всех gem'ов от других gem'ов, сам решает все конфликтные вопросы и производит загрузку gem'ов. Загрузка нужных версий при этом осуществляется в папку .bundle в пользовательскую директорию. Если при этом нужно осуществить загрузку в директорию приложения, то нужно использовать ключ с указанием имени приложения:

    $ bundle install имя_приложения

    Однако в этом случае уже ранее загруженные для других приложений gem'ы не грузятся и остаются в папке пользователя. Чтобы загрузить их все повторно в папку приложения используйте:

    $ bundle install ипя_приложения --disable-shared-gems

    Существует возможность также не просто указывать в Gemfile имена gem'ов, но и их версии, например:

    gem 'gemname', '1.1.1'

    При этом если версия не указывается, то Bundler загружает последнюю СТАБИЛЬНУЮ версую gem'а.

    Можно также указать условия по загрузки желаемых версий, как то:

    gem 'gemname', '> 1.1.1' # старше версии 1.1.1
    gem 'gemname', '=> 1.1.1' # старше или саму версию 1.1.1
    gem 'gemname', '> 1.1.1', '<2.0.0' # старше версии 1.1.1, но 2.0.0 и выше
    gem 'gemname', '~> 1.1' # старше версии 1.1, но не 2.0 и выше

    Также можно указывать из какого источника ставить gem (необязательно)

    gem 'gemname', :git=>'ссылка на git репозиторий'

    И даже с локального компьютера

    gem 'gemname', :path=>'локальный путь'

    Если какие-то версии gem'ов не были указаны в Gemfile, их можно обновить запустив команду:

    $ bundle update

    После установки или обновления gem'ов Bundler создает Gemfile.lock, где будут указаны все специфические версии всех загруженных для приложения gem'ов. Этот файл будет использоваться для развертывания Rails приложения на других машинах с теми же самыми версиями gem'ов.

    Существует возможность также развернуть все приложение вместе с gem'ами. Для этого нужно создать пакет gem'ов, который разместится в папке vendor/cache:

    $ bundle package

    После этого все запуски Bundler'a для приложения будут приводить к установке gem'ов только из данного пакета, а не из внешних источников. Особенно это актуально для Rails-приложений, использующих свои gem'ы, которых нет в публичных источниках.

    Последнее замечание. Если вам не нужна работа Bindler'а в приложении - просто удалите файл Gemfile и Bundler перестанет использоваться.

    Опубликовано: Категория: Ruby on RailsКомментарии: 0

    Комментарии

    Пока нет комментариев.

    Оставьте свой комментарий

    Ваше имя: Email: Оставьте свой email, если хотите получать уведомления о комментариях на этой странице. Ваш email не будет опубликован на сайте.