В каждом engine есть своя структура: /lib /lib/engine_name.rb /lib/engine_name/ /lib/engine_name/engine.rb И вот оба этих файла грузятся автоматически и в них можно писать инициализационный код.
https://github.com/puffer/puffer_pages/blob/master/lib/puffer_pages.rb
https://github.com/puffer/puffer_pages/blob/master/lib/puffer_pages/engine.rb
Вот примеры. В рельсах 3.1 каждый гем, у котороего есть Engine класс ещё и генерит таски для копирования миграций в приложение, а с версии 3.0 приложение подхватывает что кгодно из engine гема, если оно лежит в соответствии с конвенциями. И то, это поведение можно кастомизировать.
https://github.com/rails/rails/blob/master/railties/lib/rails/engine.rb - вот тут полно текста по этому поводу.
26 августа 2011 г. 13:48 пользователь Мохнатый <sergey.awanesov@gmail.com> написал:
По третьей проблеме:
Взял тот же способ что и в плагине tinyMCE и создал 2 метода: один для
котнтроллера - загружает опции и второй - хелпер, который выводит ява-
скрипты. Заинклудил первый в ActionController::Base, второй отправил
туда же но через метод 'helper'. Это сработало, но нет ли другого
способа? А то получается копипаст функционала другого плагина. Далее,
плагин получился кривой - не пишет машруты, не умеет делать миграции.
К тому же при обращении к вьюшкам плагина генерируется
MissingTemplate, хотя при инициализации я добавляю в $LOAD_PATH путь
vendor/plugins/myplugin/lib/app/views. При просмотре трассировки
ошибки я вижу другой путь - vendor/plugins/myplugin/app/views. Что я
делаю неправильно?
Написал еще и Engine, но здесь застопорился на следующем: как тут
добавить инициализацию? также создать init.rb?
On Aug 26, 10:12 am, Мохнатый <sergey.awane...@gmail.com> wrote:
> А и если получится тоже отпишусь.
>
> On Aug 26, 10:10 am, Мохнатый <sergey.awane...@gmail.com> wrote:
>
>
>
>
>
>
>
> > Спасибо, видимо таки придется делать Engine.
> > А вот по поводу третьей проблемы, я сейчас уже думаю разобрался как
> > делать. Сначала попробую и, если не получится, то отпишусь.
>
> > On Aug 26, 9:56 am, pyromaniac - <kinwiz...@gmail.com> wrote:
>
> > > Первая и вторая проблема решаются таки созданием Engine. Третья - не очень
> > > понял.
>
> > > 26 августа 2011 г. 8:30 пользователь Мохнатый
> > > <sergey.awane...@gmail.com>написал:
>
> > > > Всем привет. Пишу плагин, столкнулся с несколькими проблемами. Во-
> > > > первых изучение материалв показало, что сейчас пишутся либо гемы либо
> > > > Rails::Engine. Я решил не переделывать плагин в engine, пока не
> > > > разберусь с текущими проблемами.
> > > > Что не работает:
> > > > 1. Приложение не видит машруты из плагина. Пробовал создавать
> > > > routes.rb внутри плагина и там прописывать машруты. Пробовал инклудить
> > > > в ActionDispatch::Routing::RouteSet::Mapper свой модуль с маршрутами.
> > > > Не работает в обоих случаях. Можно конечно и руками прописывать в
> > > > routes.rb приложения, но хочу разобраться, почему мои действия не
> > > > работают.
> > > > 2. Не работают миграции. Миграции я вынес в таск. Пробовал запускать
> > > > таск при инициализации плагина - не вышло. Пробовал через приложение.
> > > > В этом случае ошибок нет, все срабатывает, но таблица в базе данных
> > > > приложения не появляется. Миграции делал через
> > > > ActiveRecord::Migrator.migrate 'path'. После чего вызываю таск
> > > > db:schema:dump.
> > > > 3. Не получается сделать метод, который при вызове его в контроллере
> > > > добавлял бы во все вьюшки этого котроллера ява-скрипт. Я написал
> > > > метод, который пытаюсь инклудить в ActionController::Base, но у меня
> > > > нет четкого понимания, что я делаю. Сижу разбираюсь, но время
> > > > поджимает.
> > > > Заранее спасибо.
>
> > > > --
> > > > --
> > > > Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы
> > > > "RubyOnRails to russian" на группах Google.
> > > > FAQ группы находится по адресу:http://ru.wikibooks.org/wiki/RubyFAQ
>
> > > > Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
> > > > ror2ru@googlegroups.com
> > > > Чтобы отменить подписку на эту группу, отправьте сообщение по адресу:
> > > > ror2ru-unsubscribe@googlegroups.com
> > > > Дополнительные варианты находятся на странице группы
> > > >http://groups.google.com/group/ror2ru?hl=ru
--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru
--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru
Комментариев нет:
Отправить комментарий