Макс Лапшин - "Приложения в плагинах"

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Event

    Макс Лапшин - "Приложения в плагинах" - Presentation Transcript

    1. ПРИЛОЖЕНИЯ В ПЛАГИНАХ Макс Лапшин июнь 2009
    2. ПРИВЕТ Меня зовут Макс Лапшин •max@maxidoors.ru •http://github.com/maxlapshin •модератор ror2ru О чем буду рассказывать?
    3. ПЛАГИНЫ Да что такое рельсовые плагины? Неперезагружаемый код, лежащий в /vendor/plugins •Умеют встраиваться во все три слоя MVC; •Могут объявлять новые классы модели. Первая проблема очевидна: Плагин до 2.3 не мог объявить шаблон, контроллер или маршрут к нему. А зачем это?
    4. КОНТРОЛЛЕР В ПЛАГИНЕ 3 года один и тот же вопрос в ror2ru: встраивание форума/вики в рельсы. Ответ один: DocuWiki.php + phpBB. Рельсы не позволяли вовсе встраивать подприложения, хотя потребность была. А Engines?
    5. ПЛАГИН ENGINES Все те три года, пока мучались с форумами на PHP жил плагин Engines •Полноценные подприложения в vendor/plugins; •жуткие хаки ядра рельс, отваливающиеся на апдейтах; •сомнительной стабильности хаки dependencies; •несовместимость с другими хаковыми плагинами; •маленькое количество пользователей; •рабочий форум savage beast. Честно, он работает. А что там про 2.3?
    6. 2.3 — PLUGIN APP Что-то поменялось в умах 37signals и парни решили начать вставлять в ядро рельс функциональность плагинных приложений. •Контроллеры в плагинах; •шаблоны в плагинах; •роуты в плагинах. Стало возможно создавать приложения в плагинах. Неужели счастье пришло?
    7. КУЧА ПРОБЛЕМ Мелкие: •Неработающие маршруты. Нельзя из приложения перекрыть маршрут в плагине. Смотрим код clearance; •нельзя выполнять миграции из плагинов. ln -s в помощь; •с миграциями ещё проблема с порядком; •нет простого способа обратиться к ассетам из плагинов. Проблема глубокая, но ln -s в помощь. Это мелкие? А что же крупные??
    8. КУЧА ПРОБЛЕМ Крупные: •Перекрывание кода плагина из пользовательского приложения. Ссылки для чтения: •http://coryosborn.com/posts/railsconf-day-2-rails- engines •http://rails-engines.org/news/2009/02/02/engines-in- rails-2-3/ А стоит ли овчинка выделки?
    9. СТОИТ Проблемы, которые можно решить с помощью ln -s, решайте так. Возможный путь решения инъекции кода: ./script/generate
    10. ГЕНЕРАТОР ПОМОГАЕТ В рельсах есть генераторы. Помогают создать миграции с правильными timestamp Он же сгенерирует нужные пользовательские модели в которых будет стоять include PluginCode сам то пробовал такое?
    11. ПРИМЕРЫ РАБОТЫ Задача стояла так: Есть источник данных, которые могут запаздывать на несколько минут. Вставить в несколько внутренних приложений код, который будет синхронизировать эти данные. Решение
    12. SOURCE CLIENT В плагине были контроллеры, к которым источник обращается для оповещения об обновлениях. В плагине спрятаны ActiveResource модели, умеющие обрабатывать данные с источника. ActiveRecord модели помещены с помощью генератора в приложение и в них включаются модули из плагина. Есть rake task-и для обновления по крону. А чего у других?
    13. DJANGO Самый близкий пример—Django на питоне. Все приложение состоит из ядра, в которое вставляются плагины—namespaces. Все модели соответственно в пространствах имен и никаких миграций.
    14. ИТОГИ •Контроллеры и шаблоны можно класть в плагины уже сейчас; •всякие хитрости вида перекрытия кода плагина пока толком недоступны; •ждем фишек в Rails 3.0

    + railsclubrailsclub, 4 months ago

    custom

    251 views, 0 favs, 0 embeds more stats

    RailsClub'Moscow (2009.06.20). Макс Лапши more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 251
      • 251 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 3
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories