Sinatra / Rails: сохраняют экземпляры пользовательских классов во время жизни приложения
-
01-10-2019 - |
Вопрос
Могу ли я утверждать приложения Rails / Sinatra инициализируются только один раз, и все запросы разделяют один и тот же экземпляр приложения? Или новые запросы порождают новые экземпляры приложений?
Можно ли применить пользовательские классы и упорствовать их во время жизни приложения без использования сеансов, хранилищ баз данных или сторонних услуг? Если это так, каковы последствия с точки зрения охраны потоков?
Я пытаюсь построить, как реализовать веб-менеджер загрузки на основе веб-сайтов, и в настоящее время я оцениваю границы на основе Ruby.
Решение
Могу ли я утверждать приложения Rails / Sinatra инициализируются только один раз, и все запросы разделяют один и тот же экземпляр приложения? Или новые запросы порождают новые экземпляры приложений?
Не вообще. Это действительно зависит от вашей настройки. Если вы работаете только на процессе с сервером (Handler aka Handler), который повторно использует тот же объект приложения, это будет работать. Используется ли тот же экземпляр вашего приложения, зависит от использования веб-фреймворк, которые вы используете. Sinatra, например, создает новый экземпляр вашего класса приложений (обычно Sinatra::Application
) Для каждого запроса при использовании в качестве конечной точки стойки.
Можно ли применить пользовательские классы и упорствовать их во время жизни приложения без использования сеансов, хранилищ баз данных или сторонних услуг? Если это так, каковы последствия с точки зрения охраны потоков?
Если вы действительно хотите сохранить классы, вам, вероятно, понадобится что-то вроде Maglev. Тем не менее, я считаю, что вы имеете в виду настойчивые случаи пользовательских классов. Если вы не хотите использовать базу данных для настойчивости (вы действительно должны), вы можете вернуться к PSTORE, которая отправляется с Ruby.