Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 4

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