Создание гема ruby ​​для приложений Rails - PullRequest
18 голосов
/ 15 января 2010

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

Я понимаю преимущества использования гемов по сравнению с плагинами, так как они доступны для версий, сегментированы, общесистемны, просты в управлении и совместном использовании и т. Д., И т. Д., Но я не знаю, как сделать гем для моих приложений на rails!

Вы всегда начинаете с плагина и конвертируете его в драгоценный камень, я видел слова «упакуйте его как драгоценный камень». Кроме того, драгоценный камень, о котором я думаю, будет бесполезен в обычной ruby-программе, он полезен только для rails-приложений. Я даже не уверен, имеет ли смысл такая семантика, RubyGem, которая будет работать только в приложении rails!?

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

Ответы [ 4 ]

7 голосов
/ 15 января 2010

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

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

Почти каждый плагин Rails может быть упакован как Gem. Например, возьмите мой плагин tabs_on_rails .

Вы можете установить его как Gem, определяющий зависимость от environment.rb. Или вы можете использовать команду script/plugin install, как вы ожидаете.

Если вы хотите добиться того же результата, обязательно следуйте стандартной компоновке Gem и предоставьте сценарий инициализации init.rb, требуемый Rails. Кроме того, вы можете захотеть создать файл install.rb и uninstall.rb для включения перехватов после установки и после удаления, когда плагин установлен как стандартный плагин Rails.

И последнее, но не менее важное: если вы упаковываете плагин в Gem, вы можете повторно использовать его в не-Rails-проектах и ​​предоставлять инициализацию для Rails, используя файл init.rb. Non-Rails-приложения будут просто игнорировать это.

3 голосов
/ 28 сентября 2013
3 голосов
/ 15 января 2010

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

Чтобы сделать драгоценный камень, этот ресурс http://railscasts.com/episodes/183-gemcutter-jeweler будет полезен.

2 голосов
/ 15 января 2010

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

...