Ответ 1
Во время вашей разработки в Rails будут моменты, когда вы захотите предоставить некоторую функциональность, которая требуется вам, но либо вы не знаете, как это сделать, либо не хотите ее реализовать самостоятельно, поскольку много работы было внесено в его развитие талантливыми разработчиками.
Эти разработки, которые могут вам понадобиться (аутентификация пользователей, система сообщений, обработчики ресурсов, геолокация, система разбиения на страницы, связь с внешними службами, такими как Amazon AWS и, наконец, не в последнюю очередь Rails) называются Ruby Gems. Это рубиновые программные пакеты, которые не обязательно относятся к Rails, но поскольку Rails основан на Ruby, 98% драгоценных камней могут быть доступны для вашего кода веб-сервера Rails.
Множество драгоценных камней можно найти в github, но его уловщик для поиска драгоценных камней через ruby-gems или ruby-toolbox
Ваш gemfile
- это список всех драгоценных камней, которые вы хотите включить в проект.
Он используется с bundler (также жемчужиной) для установки, обновления, удаления и управления другими используемыми драгоценными камнями.
gemfile
имеет другую цель: вы можете группировать драгоценные камни в группах :development
, :test
, :assets
, :production
и т.д., а Rails будет знать, когда включать драгоценные камни. Например:
group :development, :test do
gem "rspec-rails"
gem "factory_girl_rails"
gem "guard-rspec"
end
Обратите внимание, что в Rails 4 группа assets
устарела
Эти драгоценные камни относятся к среде разработки и тестовой среде, поскольку они предназначены для тестирования приложения. Вы не нуждаетесь в них в производственной среде (вы могли бы, но это раздувает память без необходимости).
So - Чтобы использовать gemfile
, просто напишите драгоценный камень, который вы хотите установить, например
gem 'devise'
обязательно установите bundler
заранее (в консоли /cmd/ssh ) с помощью
$ gem install bundler
а затем запишите в консоль
bundle install
вы заметите, что появится еще один gemfile! Gemfile.lock
Этот файл, как вы увидите, если вы откроете его с помощью текстового чтения, перечисляет все ваши драгоценные камни с их версией и их зависимостями. Это пригодится, когда вам нужно знать, какие версии установленных вами камней.
Подробнее читайте на странице gemfile
- на странице поставщика.
для получения информации о выборе драгоценного камня вы можете начать с this
Удачи и получайте удовольствие!
Хорошо, так что это созданный Gemfile.lock?
Gemfile.lock, как следует из названия, является блокировкой на всех версиях всех установленных драгоценных камней. Поэтому, если Gemfile - это то, что требуется для установки, файл блокировки - это то, что установлено, и какая версия действительно требуется для запуска приложения.
Если у вас нет драгоценных камней в этой конкретной версии (как указано в Gemfile.lock), рельсы будут жаловаться, и вам придется либо установить отсутствующие драгоценные камни (через bundle install
), либо исправить любые конфликты вручную (я считаю, связка даст вам некоторые подсказки)
Некоторые вещи, которые нужно знать о Gemfile.lock
- Если вы случайно удалите его, он будет восстановлен при запуске
bundle install
. Если вы случайно удалитеgemfile
, вам не повезло. Вы должны использовать git:) - Heroku не заботится о Gemfile.lock, поскольку он переустанавливает все драгоценные камни. Итак, для Heroku вы должны установить версию gem, которую хотите, или Heroku всегда будет устанавливать последнюю версию драгоценного камня, что может вызвать проблемы.
- Храните файл Gemfile.lock в своем проекте, чтобы вы всегда знали, какая версия драгоценных камней делает ваше приложение работоспособным.