2010-08-19 2 views
3

Я нахожусь в процессе создания моего первого плагина rails и считаю, что управление версиями плагина и тестового приложения довольно раздражает.Как управлять версиями плагина rails и приложения для тестирования вместе

Вот моя проблема:

Чтобы действительно проверить мой плагин в действии мне нужно, чтобы запустить его в тестовом приложении (который в основном только приложение эшафот, где я установить плагин)

Когда я внесение изменений в плагин, мне удобно изменить его в тестовом приложении, чтобы сразу увидеть изменения. Однако, когда я хочу совершить и вернуть свои изменения обратно в github, я в конечном итоге скопирую все файлы из тестового приложения обратно в свою папку «Голый плагин» и выполняю свои обязательства.

Есть ли лучший способ справиться с этим без копирования файлов туда и обратно? Мне интересно услышать от других разработчиков плагинов, если это возможно, о том, как вы справляетесь с этой ситуацией.

Одним из возможных решений, которое я понял, является наличие другого репозитория git в каталоге vendor/plugins/myplugin (который будет иметь удаленное репо github). Я не уверен, что это лучше всего (и до сих пор мне не очень удавалось заставить его работать ...)

ответ

3

Я рекомендую использовать git submodules, проверить detailed description.

+0

Это именно то, что я искал, спасибо! –

1

Я создаю мягкую ссылку в каталоге vendor/plugin, чтобы указать на исходный код плагина. Если вы находитесь в Windows, вы можете использовать инструмент junction, чтобы создать программную ссылку. например:

c:\test_app 
    vendor 
     plugin 
     foo_plugin -> points to c:\foo_plugin 

c:\foo_plugin 
    lib 
1

Подмодули работают лучше всего, я думаю. Что мне не нравится в разработке плагинов, так это то, что вы всегда запускаете/останавливаете скрипт/сервер. Не зная, какой плагин вы строите, я просто предполагаю, что вы создаете абстрактный класс.

Я лично считаю, что лучший способ - разработать класс в каталоге lib вашего приложения rails. Как только вы получите около 99%, переместите класс в каталог lib вашего плагина. Затем зафиксируйте изменения в репозитории плагинов.

1

Если вы готовы упаковать свой последний плагин в качестве драгоценного камня, то есть гораздо более простой способ. В вашем основном приложении подмостей, внутри Gemfile вы можете указать на локальный путь:

Gem «Foo»,: путь => «../foo»

Таким образом, ваше приложение подмостей и двигатель/плагин является в двух отдельных каталогах; два полностью несвязанных git-repos. Вам даже не нужно начинать & остановить ваш веб-сервер эшафота, когда вы вносите изменения в плагин (по крайней мере, в рельсах 3).

Я просто написал учебник о том, как я создал свой первый рельсы двигатель, и я извлек фундамент в хорошей отправной точкой для других строителей двигателя:

http://keithschacht.com/creating-a-rails-3-engine-plugin-gem

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

+0

Круто спасибо, я отдам! Создание моего плагина в драгоценном камне было в моем списке of-dos на некоторое время ... –

Смежные вопросы