Menggunakan Sinatra di Ruby

Di artikel sebelumnya di ini serangkaian artikel, kami berbicara tentang apa itu Sinatra. Pada artikel ini, kita akan melihat beberapa kode Sinatra fungsional nyata, menyentuh beberapa fitur Sinatra, yang semuanya akan dieksplorasi secara mendalam dalam artikel mendatang dalam seri ini.

Sebelum memulai, Anda harus melanjutkan dan menginstal Sinatra. Memasang Sinatra semudah permata lainnya. Sinatra memang memiliki beberapa dependensi, tetapi tidak ada yang utama dan Anda seharusnya tidak memiliki masalah menginstalnya pada platform apa pun.

$ permata instal sinatra

Halo Dunia!

Aplikasi "Hello world" Sinatra sangat sederhana. Tidak termasuk baris yang membutuhkan, shebang dan spasi putih, itu hanya tiga baris. Ini bukan hanya sebagian kecil dari aplikasi Anda, seperti pengontrol dalam aplikasi Rails, ini semuanya. Hal lain yang mungkin Anda perhatikan adalah bahwa Anda tidak perlu menjalankan apa pun seperti generator Rails untuk menghasilkan aplikasi. Cukup tempelkan kode berikut ke dalam file Ruby baru dan Anda selesai.

instagram viewer
#! / usr / bin / env ruby
membutuhkan 'rubygems'
membutuhkan 'sinatra'
dapatkan '/' lakukan
'Halo Dunia!'
akhir

Tentu saja ini bukan program yang sangat berguna, itu hanya "Halo dunia," tetapi aplikasi yang lebih berguna di Sinatra tidak jauh lebih besar. Jadi, bagaimana Anda menjalankan aplikasi Web kecil ini? Semacam kompleks skrip / server perintah? Tidak, jalankan saja file tersebut. Itu hanya program Ruby, jalankan!

inatra $ ./hello.rb
== Sinatra / 0.9.4 telah mencapai tahap 4567 untuk pengembangan dengan cadangan dari Mongrel

Belum terlalu mengasyikkan. Ini memulai server dan terikat ke port 4567, jadi silakan dan arahkan browser Web Anda ke http://localhost: 4567/. Ada pesan "Halo dunia" Anda. Aplikasi web tidak pernah semudah ini di Ruby sebelumnya.

Menggunakan Parameter

Jadi mari kita lihat sesuatu yang sedikit lebih menarik. Mari kita membuat aplikasi yang menyapa Anda dengan nama. Untuk melakukan ini, kita perlu menggunakan parameter. Parameter di Sinatra seperti yang lainnya - sederhana dan mudah.

#! / usr / bin / env ruby
membutuhkan 'rubygems'
membutuhkan 'sinatra'
dapatkan '/ hello /: name' do
"Halo # {params [: name]}!"
akhir

Setelah Anda melakukan perubahan ini, Anda harus memulai ulang aplikasi Sinatra. Bunuh dengan Ctrl-C dan jalankan lagi. (Ada cara untuk mengatasi ini, tetapi kita akan melihat itu di artikel mendatang.) Sekarang, parameternya mudah. Kami telah membuat tindakan yang disebut /hello/:name. Sintaks ini meniru seperti apa URL itu, jadi buka http://localhost: 4567 / halo / Nama Anda untuk melihatnya beraksi.

Itu /hello bagian cocok dengan bagian URL dari permintaan yang Anda buat, dan :nama akan menyerap teks apa pun yang Anda berikan dan memasukkannya ke dalam params hash di bawah kunci :nama. Parameternya semudah itu. Tentu saja ada banyak lagi yang dapat Anda lakukan dengan ini, termasuk parameter berbasis regexp, tetapi ini adalah semua yang Anda perlukan di hampir setiap kasus.

Menambahkan HTML

Akhirnya, mari kita tambahkan aplikasi ini dengan sedikit HTML. Sinatra akan mengembalikan apa pun yang didapatnya dari penangan URL Anda ke browser web. Sejauh ini, kami baru saja mengembalikan serangkaian teks, tetapi kami dapat menambahkan beberapa HTML di sana tanpa masalah. Kami akan menggunakan ERB di sini, sama seperti digunakan di Rails. Ada pilihan lain (yang bisa dibilang lebih baik), tapi ini mungkin yang paling akrab, seperti Ruby, dan akan baik-baik saja di sini.

Pertama, Sinatra akan membuat tampilan yang disebut tata letak jika ada. Tampilan tata letak ini harus memiliki a menghasilkan pernyataan. Pernyataan hasil ini akan menangkap output dari tampilan spesifik yang diberikan. Ini memungkinkan Anda membuat tata letak dengan sangat sederhana. Akhirnya, kami memiliki Halo tampilan, yang menghasilkan pesan halo yang sebenarnya. Ini adalah tampilan yang dirender menggunakan erb: halo panggilan metode. Anda akan melihat bahwa tidak ada file tampilan terpisah. Mungkin ada, tetapi untuk aplikasi sekecil itu, yang terbaik adalah menyimpan semua kode dalam satu file. Padahal tampilan tersebut dipisahkan pada bagian akhir file.

#! / usr / bin / env ruby
membutuhkan 'rubygems'
membutuhkan 'sinatra'
dapatkan '/ hello /: name' do
@name = params [: name]
erb: halo
akhir
__AKHIR__
@@ tata letak





@@ halo

Halo !

Dan begitulah. Kami memiliki aplikasi hello world yang lengkap dan fungsional di sekitar 15 baris kode termasuk tampilan. Artikel-artikel berikut, kami akan melihat lebih dekat pada rute, bagaimana Anda dapat menyimpan dan mengambil data, dan bagaimana melakukan pandangan yang lebih baik dengan HAML.

instagram story viewer