У меня есть проект Rails, у которого есть база данных Postgres для реального приложения, но который должен извлечь кучу данных из базы данных Oracle.
database.yml выглядит как
development:
adapter: postgresql
database: blah blah
...
oracle_db:
adapter: oracle
database: blah blah
Мои модели, которые происходят от данных в БД Oracle, выглядят примерно так:
class LegacyDataClass < ActiveRecord::Base
establish_connection "oracle_db"
set_primary_key :legacy_data_class_id
has_one :other_legacy_class, :foreign key => :other_legacy_class_id_with_funny_column_name
...
end
Теперь, по привычке, я часто делаю большую часть своей ранней разработки (и это ранняя разработка), немного программируя и затем играя в консоли Rails. Например, после определения всех ассоциаций для LegacyDataClass я начну пробовать что-то вроде a = LegacyDataClass.find(:first); puts a.some_association.name
. Неожиданно это умирает с LegacyDataClass еще не загружен.
Затем я могу require 'LegacyDataClass'
, который устраняет проблему до тех пор, пока мне не понадобится reload!
, который фактически не перезагрузит его, или пока я не открою новый экземпляр консоли.
Таким образом, вопросы:
- Почему это происходит? Ясно, что есть некоторая магия Рельсов, которую я не понимаю.
- Что такое удобный Rails Обходной путь ?