Sobes.tech
Middle+

როგორ მუშაობს მოთხოვნის დამუშავების ციკლი Ruby on Rails-ში?

sobes.tech AI

პასუხი AI-სგან

  1. වෙබ් සේවාදායකය (උදාහරණයක් ලෙස, Puma, Unicorn): ඇතුල්වෙන HTTP ඉල්ලීම ලබාගනී.
  2. Rack: වෙබ් සේවාදායකය හා Rails යෙදුම අතර අතුරුමුහුණතකි. වෙබ් සේවාදායකය ඉල්ලීමක් Rack වස්තුවක (Rack පරිසරය) ආවරණය කරයි, එය Rails යෙදුමට ලබාදේ.
  3. Rails යෙදුම: Rack අතුරුමුහුණත තුළ, Rails යෙදුම ඉල්ලීම සැකසෙයි. ප්‍රධාන අදියර:
    • Middleware Stack: මැදහත් වැඩසටහන් (middleware) එකතුවක්, එය විවිධ කාර්යයන් ඉටු කරයි ඉල්ලීම සැකසීමේ පෙර සහ පසුව (උදාහරණයක් ලෙස, මාර්ගගත කිරීම, පරාමිතීන් විශ්ලේෂණය, කැෂේකරණය, සැසියන් කළමනාකරණය).
    • Router: URL සහ HTTP ක්‍රියාවලිය මත පදනම්ව, ඉල්ලීම සැකසිය යුතු නියමිත පාලකය හා ක්‍රියාව තීරණය කරයි.
    • Dispatcher: සොයාගත් පාලකය හා ක්‍රියාවට ඉල්ලීම යවයි.
    • Controller: ව්‍යාපාර ලොජික් ක්‍රියාත්මක කරයි. මොඩල් සමඟ සම්බන්ධ විය හැකිය (දත්ත සමඟ වැඩ කිරීම සඳහා) සහ දර්ශන රෙන්ඩර කරයි.
    • Views: දර්ශන (ආකෘති) HTML, JSON හෝ වෙනත් ප්‍රතිචාර ආකෘති ජනනය කරයි. එය ආකෘතිකරණකරු (ERB, Haml, Slim) භාවිතා කළ හැක.
    • Response: පාලකය පිළිතුරු වස්තුවක් සාදයි, එය HTTP තත්ත්වය, හිසකෙළි සහ පිළිතුරු ශරීරය ඇතුළත් වේ.
  4. Middleware Stack හරහා ආපසු යාම: පිළිතුරු වස්තුව middleware stack හරහා ආපසු ගමන් කරයි, අවසන් සැකසීම සඳහා.
  5. Rack: Rails පිළිතුරු වස්තුව වෙබ් සේවාදායකයට අර්ථ දක්වන ආකාරයට පරිවර්තනය කරයි.
  6. වෙබ් සේවාදායකය: සකස් කළ 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