Alur Aplikasi Ruby on Rails

Saat Anda menulis program sendiri dari awal hingga akhir, mudah dilihat Alur kontrol. Program dimulai di sini, ada loop di sana, pemanggilan metode ada di sini, semuanya terlihat. Tetapi dalam aplikasi Rails, hal-hal tidak begitu sederhana. Dengan kerangka kerja apa pun, Anda melepaskan kendali atas hal-hal seperti "aliran" demi cara yang lebih cepat atau sederhana untuk melakukan tugas-tugas kompleks. Dalam kasus Ruby on Rails, kontrol aliran ditangani di belakang layar, dan yang Anda miliki hanyalah (kurang lebih) koleksi model, tampilan, dan pengontrol.

Inti dari setiap aplikasi web adalah HTTP. HTTP adalah protokol jaringan yang digunakan browser web Anda untuk berbicara dengan server web. Di sinilah istilah seperti "permintaan," "DAPATKAN" dan "POST" berasal, mereka adalah kosakata dasar protokol ini. Namun, karena Rails adalah abstraksi dari ini, kami tidak akan menghabiskan banyak waktu untuk membicarakannya.

Saat Anda membuka halaman web, klik pada tautan atau kirimkan formulir di browser web, browser akan terhubung ke server web melalui TCP / IP. Peramban kemudian mengirimkan "permintaan" kepada server, menganggapnya seperti formulir email yang diisi peramban meminta informasi pada halaman tertentu. Server akhirnya mengirim "respons" ke browser web. Ruby on Rails bukan server web, server web dapat berupa apa saja dari Webrick (apa yang biasanya terjadi ketika Anda memulai server Rails dari itu

instagram viewer
garis komando) ke Apache HTTPD (server web yang memberdayakan sebagian besar web). Server web hanyalah fasilitator, dibutuhkan permintaan dan menyerahkannya ke aplikasi Rails Anda, yang menghasilkan respons dan umpan balik adalah kembali ke server, yang pada gilirannya mengirimkannya kembali ke klien. Jadi arus sejauh ini adalah:

Salah satu hal pertama yang dilakukan aplikasi Rails dengan permintaan adalah mengirimkannya melalui router. Setiap permintaan memiliki URL, inilah yang muncul di bilah alamat browser web. Perute adalah yang menentukan apa yang harus dilakukan dengan URL itu, apakah URL itu masuk akal dan apakah URL itu mengandung parameter apa pun. Router sudah dikonfigurasi dalam config / route.rb.

Pertama, ketahuilah bahwa tujuan akhir router adalah untuk mencocokkan URL dengan controller dan tindakan (lebih lanjut tentang ini nanti). Dan karena sebagian besar aplikasi Rails Tenang, dan hal-hal dalam aplikasi Tenang diwakili menggunakan sumber daya, Anda akan melihat garis seperti sumber daya: posting dalam aplikasi Rails khas. Ini cocok dengan URL /posts/7/edit dengan pengontrol Posting, the sunting tindakan pada Post dengan ID 7. Router hanya memutuskan ke mana permintaan pergi. Jadi blok [Rails] kami dapat sedikit diperluas.

Sekarang router telah memutuskan controller mana untuk mengirim permintaan, dan ke action mana pada controller itu, ia mengirimkannya. Pengendali adalah sekelompok tindakan terkait yang digabungkan bersama dalam satu kelas. Misalnya, dalam sebuah blog, semua kode untuk melihat, membuat, memperbarui, dan menghapus posting blog digabungkan menjadi satu dalam sebuah pengontrol yang disebut "Posting." Tindakannya biasa saja metode dari kelas ini. Pengendali berada di aplikasi / pengendali.

Jadi misalkan browser web mengirim permintaan /posts/42. Router memutuskan ini merujuk ke Pos pengontrol, menunjukkan metode dan ID pos untuk ditampilkan adalah 42, jadi itu disebut menunjukkan metode dengan parameter ini. Itu menunjukkan Metode tidak bertanggung jawab untuk menggunakan model untuk mengambil data dan menggunakan tampilan untuk membuat output. Jadi blok [Rails] kami yang diperluas sekarang:

Model ini adalah yang paling sederhana untuk dipahami dan paling sulit diimplementasikan. Model bertanggung jawab untuk berinteraksi dengan database. Cara paling sederhana untuk menjelaskannya adalah modelnya adalah serangkaian panggilan metode sederhana yang mengembalikan objek Ruby biasa yang menangani semua interaksi (baca dan tulis) dari database. Jadi mengikuti contoh blog, API controller akan digunakan untuk mengambil data menggunakan model akan terlihat seperti Post.find (params [: id]). Itu params adalah apa yang diurai oleh router dari URL, Post adalah modelnya. Ini membuat pertanyaan SQL, atau melakukan apa pun yang diperlukan untuk mengambil posting blog. Model terletak di aplikasi / model.

Penting untuk dicatat bahwa tidak semua tindakan perlu menggunakan model. Berinteraksi dengan model hanya diperlukan ketika data perlu dimuat dari database atau disimpan ke database. Dengan demikian, kita akan meletakkan tanda tanya setelah itu di diagram alur kecil kita.

Akhirnya, saatnya untuk mulai menghasilkan beberapa HTML. HTML tidak ditangani oleh controller itu sendiri, juga tidak ditangani oleh model. Inti dari menggunakan kerangka kerja MVC adalah untuk mengelompokkan semuanya. Operasi basis data tetap dalam mode, pembuatan HTML tetap ada dalam tampilan, dan pengontrol (dipanggil oleh router) memanggil keduanya.

HTML biasanya dihasilkan menggunakan Ruby yang disematkan. Jika Anda terbiasa dengan PHP, artinya file HTML dengan kode PHP yang tertanam di dalamnya, maka Ruby yang disematkan akan sangat akrab. Pandangan ini terletak di aplikasi / tampilan, dan sebuah pengontrol akan memanggil salah satu dari mereka untuk menghasilkan output dan mengirimkannya kembali ke server web. Setiap data yang diambil oleh pengontrol menggunakan model umumnya akan disimpan dalam variabel contoh yang, berkat beberapa sihir Ruby, akan tersedia sebagai variabel instan dari dalam tampilan. Juga, Ruby yang disematkan tidak perlu menghasilkan HTML, itu dapat menghasilkan semua jenis teks. Anda akan melihat ini ketika membuat XML untuk RSS, JSON, dll.

Output ini dikirim kembali ke server web, yang mengirimkannya kembali ke browser web, yang menyelesaikan proses.

instagram story viewer