Middle+
როგორ მუშაობს მოთხოვნის დამუშავების ციკლი Ruby on Rails-ში?
sobes.tech AI
პასუხი AI-სგან
- වෙබ් සේවාදායකය (උදාහරණයක් ලෙස, Puma, Unicorn): ඇතුල්වෙන HTTP ඉල්ලීම ලබාගනී.
- Rack: වෙබ් සේවාදායකය හා Rails යෙදුම අතර අතුරුමුහුණතකි. වෙබ් සේවාදායකය ඉල්ලීමක් Rack වස්තුවක (Rack පරිසරය) ආවරණය කරයි, එය Rails යෙදුමට ලබාදේ.
- Rails යෙදුම: Rack අතුරුමුහුණත තුළ, Rails යෙදුම ඉල්ලීම සැකසෙයි. ප්රධාන අදියර:
- Middleware Stack: මැදහත් වැඩසටහන් (middleware) එකතුවක්, එය විවිධ කාර්යයන් ඉටු කරයි ඉල්ලීම සැකසීමේ පෙර සහ පසුව (උදාහරණයක් ලෙස, මාර්ගගත කිරීම, පරාමිතීන් විශ්ලේෂණය, කැෂේකරණය, සැසියන් කළමනාකරණය).
- Router: URL සහ HTTP ක්රියාවලිය මත පදනම්ව, ඉල්ලීම සැකසිය යුතු නියමිත පාලකය හා ක්රියාව තීරණය කරයි.
- Dispatcher: සොයාගත් පාලකය හා ක්රියාවට ඉල්ලීම යවයි.
- Controller: ව්යාපාර ලොජික් ක්රියාත්මක කරයි. මොඩල් සමඟ සම්බන්ධ විය හැකිය (දත්ත සමඟ වැඩ කිරීම සඳහා) සහ දර්ශන රෙන්ඩර කරයි.
- Views: දර්ශන (ආකෘති) HTML, JSON හෝ වෙනත් ප්රතිචාර ආකෘති ජනනය කරයි. එය ආකෘතිකරණකරු (ERB, Haml, Slim) භාවිතා කළ හැක.
- Response: පාලකය පිළිතුරු වස්තුවක් සාදයි, එය HTTP තත්ත්වය, හිසකෙළි සහ පිළිතුරු ශරීරය ඇතුළත් වේ.
- Middleware Stack හරහා ආපසු යාම: පිළිතුරු වස්තුව middleware stack හරහා ආපසු ගමන් කරයි, අවසන් සැකසීම සඳහා.
- Rack: Rails පිළිතුරු වස්තුව වෙබ් සේවාදායකයට අර්ථ දක්වන ආකාරයට පරිවර්තනය කරයි.
- වෙබ් සේවාදායකය: සකස් කළ HTTP පිළිතුර පාරිභෝගිකයාට යවයි.
# Rails හි පසුබැසීමේ සම්ප්රදායික ප්රවාහය
module Rails
class Application
def call(env) # env - එය Rack පරිසරය
# Middleware Stack (සරලයි)
# Rails::Rack::Logger.new.call(env) -> ... -> Rails::Rack::Failsafe.new.call(env)
# මාර්ගගත කිරීම
request = ActionDispatch::Request.new(env)
route = Rails.application.routes.recognize(request) # අදාළ මාර්ගය සොයාගනී
# වින්යාස කිරීම
controller_class = route[:controller].classify.constantize # පාලක පන්තිය ලබා ගනී
controller_instance = controller_class.new
# ක්රියාව ක්රියාත්මක කිරීම
response = controller_instance.process(route[:action], request) # පාලක ක්රියාව ඇමතුම
# Middleware හරහා ආපසු යාම
# ... (middleware හරහා ආපසු යාම)
response.to_a # පිළිතුර Rack ආකෘතියට පරිවර්තනය කරයි [තත්ත්වය, හිසකෙළි, ශරීරය]
end
end
end