Как использовать гемы, которые еще не в релизе, в плагине?
Хочу сделать плагин с использованием activeadmin на 4 рельсах. В гемспек не получается указать activeadmine, так как версия, которая не конфликтует с 4 рельсами еще только в мастер ветке.
Если указываю в гемфайле, то даже при пустом гемспеке все равно тянет не с гитхаба, а последний релиз с рубигемс gem 'activeadmin', github: 'activeadmin'. И в итоге жаулется на конфликты с 4 рельсами.
Получился варианти, если не использовать в гемфайле плагина gemspec. В таком случае, если зайти в директорию плагина и сделать bundle install, то устанавливаются корректные версии гемов.
Но если из приложения, к которому подключается этот плагин, сделать bundle install, то Gemfile просто игнорируется - грузится только то, что указано в gemspec.
Как-то уже запутался с плагинами и engine и прихожу к выводу, что для использования плагина нужны или огромные костыли или даже временную версию всех зависимостей нужно релизить. Но не может же быть все так сложно.
Собственно, задача: создать проект на 4 рельсах. Создать mountable плагин. Этот плагин должен загрузить актив-админ и создать для него роуты. Предполагается, что девайс с моделью юзера уже загружены.
@vsuhachev так и делал сначала, указывал и там и там. Но указать версию, например, 1.0.0.pre или 0.6.3 (как в мастер-ветке) - нельзя, нет такого гема. А если не указывать версию совсем, я подумал, что оно и ищет последнюю версию на руби-гемс. В итоге оставил только в гемфайле и таким образом из директории самого плагина - можно сбандлить.
Но из приложения, в которое подключаю этот плагин, зависимости из гемфайла не тянутся. Из спека - все ок.
*Этот плагин должен загрузить актив-админ и создать для него роуты* - кстати, плагин ничего не загружает, он объявляет зависимости (gemspec) а в приложении, если в гемспек не указана версия вам нужно опять сделать ссылку на гитхаб.
@vsuhachev загрузить, возможно, не лучшее слова. "подгрузить", возможно.
То есть, имеете ввиду, что Gemfile плагина - бесполезен (смысл подключать и в плагине и в приложении)?
Правильно я понимаю, что вы имеете ввиду, что нужно в gemspec указать activeadmin
нужно указывать не в Gemfile плагина, а в Gemfile приложения, в которое я подключаю плагин ?
Именно это, в принципе, и спрашивал. Если так, то значит ответ: "никак нельзя использовать. Нужно вручную загружать их из основного приложения". Верно ?
Если бы нужная вам версия была уже выпущена, то вы бы ее могли указать в gemspec и все бы работало, но она не выпущена. Следовательно вы ее указать в гемспек не можете. Можете только переопределить уже по месту использования гема(в оснеовном проекте). То есть ответ "никак нельзя использовать в данном конкретном случае".
Гемфайл это не только гемы из рантайм-зависимостей но и из девелопмент-зависимостей. А при подключении энджина в проект учитываются только рантайм-зависимости гема. То есть гемфайл не бесполезен, а наоборот полезен тем что описывает окружение времени разработки для гема.
Понял, вроде то что я искал, но еще раз уточню:
Правильно, что пока актив-админ для 4 рельс не выйдет в релиз, всем пользователям моего плагина надо будет у себя в гемфайле указывать зависимость от актив_админа с гитхаба?
Но учтите, если через некоторое время разработчики актив-админа сделают какие-то несовместимые изменения, то пользователи вашего гема могут поиметь гемор.
Чтобы этого избежать нужно либо указывать еще конкретную ревизию c которой все работает, либо форкнуть актив-админ и рекомендовать ставить его из вашего проверенного форка.