Я создаю приложение поверх устаревшей базы данных SQL Enterprise с существующей схемой, но я также хочу поддерживать PostgreSQL с аналогичной, но более обычной схемой ActiveRecord. У меня есть набор классов ActiveRecord для каждой базы данных, которые абстрагируют различия схем и представляют собой общий интерфейс для представлений и контроллеров. Я хотел бы иметь возможность переключать набор классов, используемых на уровне приложений, в соответствии с окружением/config.Интерфейс Ruby для абстрагирования устаревшей базы данных
На любом другом языке у меня будет фабрика объектов, которая создает объекты, используя соответствующие классы для среды. Но я понимаю, что такие шаблоны являются излишними для рубина.
Если у меня есть два класса, IssuePg и IssueLegacy, есть ли способ настроить мое приложение, чтобы вызов Issue.new создавал экземпляр соответствующей модели? Я знаю, что я могу назначить класс переменной, но где бы я это сделал, чтобы она была системной и невидимой для Rails и совместима со строительными лесами, поэтому я мог бы эскалайтировать вокруг проблемы, а затем изменить класс суперкласса в соответствии со средой?
Мне также нужен отдельный набор миграций для каждой среды - любые мысли? Или это проблема контроля источника?
Я полагаю, это может быть так просто. Я теряюсь во всех возможных вариантах рубиновых подарков. –