Middle
Дар кадом лаҳзаи объекти назоратӣ сохта мешавад ва вақти зиндагии он чӣ қадар аст?
sobes.tech AI
Ҷавоб аз AI
Объекти контроллер дар вақте ки HTTP-захирати қабул карда мешавад, ба вуҷуд меояд роутери Rails, ки муайян мекунад, ки кадом контроллер ва амал мебояд дархостро коркард кунанд.
Вақти зиндагии объекти контроллер маҳдуд аст ба як HTTP-захира. Пас аз коркард ва тавлиди ҷавоб, Rails объекти контроллерро нобуд мекунад.
Ин дар пайравии зерин рух медиҳад:
- Гирифтани дархост: Сервери веб HTTP-захираво ба барномаи Rails мефиристад.
- Роутинг: Роутери Rails дархостро таҳлил мекунад ва контроллер ва амалро меёбад.
- Инициализацияи контроллер: Rails намунаи нав аз синфи контроллерро месозад, ки роутер муайян кардааст.
- Иҷрои амал: Rails усули мувофиқро дар контроллер месозад.
- Коркарди дархост: Усули амал логикаи худро иҷро мекунад, бо моделҳо ҳамкорӣ мекунад ва эҳтимолан бо дигар хизматрасониҳо.
- Рендер кардани намоиш: Контроллер маълумотро барои намоиш омода мекунад ва онро рендер мекунад.
- Пешниҳоди ҷавоб: Rails ҷавоби HTTP-ро месозад, ки натиҷаи рендерро дар бар мегирад (ё JSON, ё формат дигар), ва онро ба мизоҷ фиристода мешавад.
- Нобуд кардани контроллер: Пас аз фиристодани ҷавоб, объект контроллер
ва тағйирёбандаҳои марбут ба он (масалан,
@instance_variables) бо ёрии ҷамъкунандаи партовҳои Ruby нобуд мешаванд.
# Наздикона, ки чӣ гуна дар сатҳи фреймворк менамояд
# (на код воқеии фреймворк, балки намунаи консептуалӣ)
class Rails::Application
def receive_request(request)
# request - объекти дархости HTTP
route = Rails.application.routes.recognize(request)
# route маълумот дар бораи контроллер ва амал дорад
controller_class = route.controller_class
action_name = route.action_name
# Тавлиди намунаи контроллер
controller_instance = controller_class.new
controller_instance.request = request
# Иҷрои амал
response = controller_instance.process(action_name)
# Фиристодани ҷавоб ва нобуд кардани объект
send_response(response)
# Объекти controller_instance ба ҷамъкунандаи партовҳо пешниҳод мешавад
end
end
Ҳамин тариқ, ҳар дархости нав ба тавлиди намунаи нав ва мустақил
аз контроллер оварда мерасонад. Ин кафолат медиҳад, ки ҳолати як дархост
ба ҳолати дигар таъсир намерасонад. Променливҳои намуна (@) дар контроллер
ҳақиқат то он даме зиндагӣ мекунанд, ки як дархости муайян коркард мешавад.