Повторное открытие классов движка Rails 3 из родительского приложения

В настоящее время вы не можете повторно открыть классы Engine, содержащиеся в каталоге / app , просто добавив тот же класс в родительский приложение / app директ. Например:

/my_engine/app/controllers/users_controller.rb
/my_app/app/controllers/users_controller.rb

Файл из my_engine даже не загрузится, если в родительском приложении есть файл с таким же именем. Подробнее здесь:

http: //www.cowboycoded. com / 2011/02/28 / why-you-cant-reopen-rails-3-engine-classes-from-the-parent-app /

Я ищу обходной путь, который позволит мне удалить то же имя файла / class по тому же пути, что и родительское приложение, и повторно открыть вместо перезаписи класса. Может быть, я упускаю что-то очевидное. Я могу сделать эту работу с отдельным файлом (с другим именем), который использует class_eval, но я не очень доволен этим решением. Есть идеи по поводу элегантного решения для этого?

Мне также интересно, есть ли причина этого ограничения, или это просто результат того, как rails загружает файлы (см. Включенную ссылку), а не намеренно. Мне кажется, что изменение поведения нагрузки двигателей, чтобы разрешить повторное открытие классов таким образом, было бы хорошей функцией в рельсах. Я знаю, это меня сначала смутило, и я уверен, что другие разработчики тоже будут бороться с этой проблемой.

7
задан johnmcaliley 1 March 2011 в 14:48
поделиться