Создание рубинового драгоценного камня для приложений направляющих

Как разработчик направляющих я чувствую себя немного глупым, задавая этот вопрос, но надо надеяться я изучу что-то новое, и кто-то может вывести меня из моего страдания! В моих приложениях направляющих я использую (другие народы) драгоценные камни все время, я также использую плагины от сообщества или моего собственного.

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

Вы всегда запускаете с плагина и преобразовываете его в драгоценный камень, я видел слова 'пакет он как Драгоценный камень'. Также драгоценный камень, я думаю о здании, был бы бесполезен в нормальной рубиновой программе, это только полезно для приложений для направляющих. Я даже не уверен, имеет ли семантика этого смысл, 'RubyGem', который будет только работать в приложении направляющих!?

Я хотел бы создать драгоценный камень (если это - то, что я должен использовать?) для дискретной части функциональности для моих приложений для направляющих. Это должно будет добавить миграцию базы данных, новые маршруты и обеспечить контроллеры и представления или полезных помощников представления. Я, знают, что я могу достигнуть этого через плагин, но был бы точно так же, как, чтобы знать, как/почему сделать это как 'Драгоценный камень Ruby'?

18
задан C8H10N4O2 17 August 2017 в 13:41
поделиться

3 ответа

Чтобы избежать риска чрезмерной инженерии, я обычно начинаю с функции, которую мне нужен непосредственно в приложение. Затем, как только мне нужно использовать ту же функцию в другой проект, я проверяю, стоит ли добывать его в плагин или даже отдельное приложение, обеспечивающее API.

Плагины и драгоценные камни часто взаимозаменяются. GEMS предоставляет несколько существенных преимуществ с точки зрения повторного использования и ремонтопригодности. С другой стороны, есть некоторые конкретные известные проблемы. Например, приложение Rails фактически не может загружать задачи Rake, определенные в плагин, упакованном в качестве драгоценного камня.

Почти каждый плагин рельсов может быть упакован в качестве драгоценного камня. Например, возьмите мою Tabs_On_rails плагин.

Вы можете установить его как драгоценный камень, указывающий зависимость от Security.RB. Или вы можете использовать скрипт / плагин Установите команду , как вы ожидаете.

Если вы хотите достичь того же результата, обязательно следите за стандартным макетом GEM и предоставьте скрипт инициализации INITY.RB , требуемые рельсами. Кроме того, вы можете захотеть создать install.rb и и файл Uninstall.rb , чтобы включить крюки Post-install и Post-Uninstall, когда плагин установлен в качестве стандартного плагина Rails.

Последнее, но не менее важное, если вы упаковываете плагин в качестве драгоценного камня, вы можете повторно использовать его в нерегуляционные проекты и предоставлять рельсы-специфические инициализации, используя файл INIT.RB . Приложения без рельсов просто игнорируют его.

7
ответ дан 30 November 2019 в 09:18
поделиться

Взгляните на ювелир . Ювелир дает вам набор задач граблей, чтобы сделать драгоценность и здание очень легко.

2
ответ дан 30 November 2019 в 09:18
поделиться

Никогда не обращайтесь к бизнес-компонентам из представлений jsp; что-то вроде sitemesh можно использовать для объединения нескольких видов в одном. Jsps также не должен вызывать методы контроллера напрямую

-121--2489349-

Допустим, вы найдете ответ здесь. Думаю, вам нужно подумать, как будет выглядеть "решение" для следующего парня, который смотрит на ваш код.

Я возьму более читаемый код по сравнению с парой миллисекунд в любой день.

-121--4294025-

Если вы хотите сделать плагин для Rails, https://peepcode.com/products/rails-2-plugin-patterns дает вам хорошее начало. После этого сделайте плагин драгоценным камнем.

Для создания драгоценного камня этот ресурс http://railscasts.com/episodes/183-gemcutter-jeweler будет полезен.

3
ответ дан 30 November 2019 в 09:18
поделиться