2010-06-09 5 views
2

У меня есть двигатель в поставщике/плагинах. Моя проблема в том, что я, по-видимому, не могу расширить модель двигателя с помощью модели в базовом приложении.Rails Engine: расширение модели с классом приложения

Моя структура папок:

APPNAME 
-app 
    -models 
    -item.rb 
-vendor 
    -plugins 
    -image_gallery 
    -app 
    -models 
     -image_gallery.rb 

Ничего особенного ... в моем image_gallery.rb я только что это:

class ImageGallery < Item 
end 

Но Rails жалуется на отсутствующие методы, которые определены в item.rb , Если я определяю их в файле image_gallery.rb, он работает.

ответ

1

Вы можете попробовать установить config.cache_classes = true в вашем development.rb

+0

Это сработало для вас в прошлом? – tsdbrown

+0

Поскольку единственная связанная разница в development.rb по сравнению с production.rb такова, я догадался, что ... но это приводит к другим неприятностям, но делает работу кода. –

+0

Это работает, спасибо. Единственная проблема заключается в том, что вы должны перезапустить сервер после каждого изменения. –

1

Я считаю, что это проблема порядка загрузки. Каталог поставщика не перезагружается в режиме разработки. Модель в вашем приложении не была загружена, когда модель двигателя пытается наследовать ее.

Извините, я не знаю, как исправить это и так никогда и не нашел. Я думаю, что рельсы 3 будут решать это. Обычно мы просто держим связанные модели в одном и том же двигателе или перемещаем материал двигателя в основное приложение, чтобы избежать его. Это отстойно, и я хотел бы знать правильное решение.

Попробуйте в режиме производства, и у вас не должно быть проблем. Вы можете посмотреть на дробовик, если это так.

+0

Спасибо за ваш ответ, tsdbrown, that's именно этой проблемы. Я думаю, что я должен разработать на базе приложений и поменять файлы позже на движок. Или перезапустите мой сервер после каждого изменения .. –