Я пытаюсь создать что-то (в конечном счете, драгоценный камень, но пока приложение), которое работает следующим образом.
Предположим, например, что записи БД являются породами собак.Есть родительский класс Dog и дочерний класс для каждой породы.Фактические породы неизвестны до времени выполнения.
Когда сервер запускается, он загружает записи из БД и создает экземпляры классов на основе записей, например, у меня может быть два гончих и пуделя.Когда кто-то приходит на сервер, он может захотеть получить доступ к одному из этих экземпляров собаки.
Почему бы просто не создать экземпляр на лету?В моем случае «собаки» - это в основном классы, которые содержат алгоритм и данные.Алгоритм не меняется, данные изменяются редко (порядка нескольких дней), но выполнение самого алгоритма, который использует как данные, так и некоторые динамические данные, передаваемые в виде временной метки, будет доступен несколько раз в секунду.
Было бы глупо заново создавать экземпляр объекта и загружать данные каждый раз, только чтобы выполнить запрос, а затем повторить его при следующем запросе (запросы не изменяют состояние объекта.объект).Я бы создавал и уничтожал несколько объектов в секунду, когда мог бы просто повторно использовать один и тот же объект.
не имеет смысла держать его в сеансе, поскольку кому-то, желающему пуделя, не нужно иметьинформация о гончих в ее объекте сеанса;это не имеет значения (и не масштабируется).
Как мне сохранить эти объекты в памяти?Я в основном хочу таблицу поиска для хранения экземпляров.В Java я бы создал синглтон с неким типом хэш-карты или массива, который находится в памяти.В rails я попробовал это, создав одноэлементный класс в папке lib.Я думаю - я, возможно, не понимаю этого права - что экземпляр (тот факт, что это синглтон является спорным) теряется, когда сеанс исчезает.
Ближайший ответ, который я нашел, был http://www.ruby -forum.com / topic / 129372 , который в основном помещает все в поля и методы класса.Почему-то это не так.
TIA!
Дополнение: Я с Java.В Java я просто создал бы объект, который находится в куче или, может быть, в дереве JNDI, и, когда входили HTTP-запросы, они обрабатывались сервлетом, EJB или каким-либо элементом для каждого запроса, который затем мог получить доступ к постоянному объекту.Я не могу найти эквивалент в рельсах.