Как заблокировать драгоценные камни для моего проекта рельсов? - PullRequest
1 голос
/ 05 марта 2012

Это может быть очевидным вопросом, но у меня проблемы с поиском лучшей практики.Я использую Rails 3.0 и Bundler.

Я начал разрабатывать приложение Rails на своем рабочем ноутбуке.Я добавил имена драгоценных камней в свой файл gem и запустил установку пакета.Когда я сделал это, я не обращал особого внимания на то, какая версия гемов мне нужна, я просто позволил Bundler установить последние версии.Все работало нормально.

Я перенес это приложение в Heroku, и оно просто заработало.

  1. Использует ли Heroku версии драгоценных камней, определенные в моем файле Gemfile.lock?Или это загрузка последних версий с использованием Gemfile и их установка?

    Тогда я получил новый ноутбук.Поэтому я решил клонировать git-репо и на этом ноутбуке.Я установил RVM, клонировал репозиторий из GitHub и затем запустил пакетную установку локально.Проблема заключалась в том, что из-за того, что я не указал версии gem в Gemfile, при запуске bundle install были загружены последние версии gem.Я внес некоторые изменения в CSS и отправился в Heroku, и был удивлен, обнаружив, что приложение сломано.Очевидно, для гема paperclip теперь требуется какой-то другой гем aws или что-то подобное.

    Поэтому я просмотрел журналы git на Gemfile.lock, нашел предыдущую рабочую версию paperclip и поместил этот номер версии в Gemfile.Перепихнул к героку и снова работает.

  2. Как избежать этой проблемы?Должен ли я всегда указывать номер версии gem в моем Gemfile?Должен ли я продавать свои драгоценные камни (чего я раньше не делал, как это сделать)?

1 Ответ

1 голос
/ 07 марта 2012

Вопрос первый, зависит от того, как гемы объявлены в Gemfile: например, если объявить gem "omniauth", будет упакован последний гем omniauth в heroku Gemfile.lock во время развертывания / компиляции, а если вы укажете gem "omniauth", "0.3.4", вы получите точно«0.3.4» в Heroku.

В рельсах не рекомендуется использовать Vendoring> = 3.2.2

и да, лучше указывать все версии гемов в Gemfile, а когда вам нужно обновить,делать по одному, выполняя локально bundle update omniauth после помещения новой версии в Gemfile ...

...