Как управлять версиями плагина rails и приложения для тестирования вместе - PullRequest
3 голосов
/ 19 августа 2010

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

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

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 19 августа 2010

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

1 голос
/ 15 сентября 2010

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

gem 'foo',: path => "../foo"

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

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

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

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

1 голос
/ 19 августа 2010

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

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

1 голос
/ 19 августа 2010

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

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

c:\foo_plugin
  lib
...