Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. CMS

Membangun CMS: rubyPress

by
Read Time:14 minsLanguages:

Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)

Setelah membuat struktur dasar sistem manajemen konten (CMS), dan server sebenarnya menggunakan Go dan Node.js, Anda siap untuk mencoba dengan bahasa lainnya.

Kali ini, saya menggunakan bahasa Ruby untuk membuat server-nya. Saya telah menemukan bahwa dengan membuat program yang sama dalam banyak bahasa, Anda mulai mendapatkan wawasan baru tentang cara yang lebih baik untuk menerapkan program ini. Anda juga melihat lebih banyak cara untuk menambahkan fungsionalitas ke program. Mari kita mulai.

Pengaturan dan Memuat Perpustakaannya

Untuk memprogram di Ruby, Anda perlu instalasi versi terbaru pada sistem Anda. Banyak sistem operasi yang telah diinstal sebelumnya dengan Ruby akhir-akhir ini (Linux dan OS X), namun biasanya memiliki versi yang lebih lawas. Tutorial ini mengasumsikan bahwa Anda memiliki versi Ruby 2.4.

Cara termudah untuk upgrade ke ruby versi terbaru adalah dengan menggunakan RVM. Untuk menginstal RVM di Linux atau Mac OS X, ketik berikut ini di terminal:

Ini akan membuat koneksi yang aman untuk mengunduh dan menginstal RVM. Ini akan menginstal rilis Ruby terbaru yang stabil juga. Anda harus memuat ulang shell Anda untuk menyelesaikan instalasi.

Untuk Windows, Anda bisa mendownload Windows Ruby Installer. Saat ini, paket ini sampai ke Ruby 2.2.2, yang mana bagus untuk menjalankan perpustakaan dan skrip dalam tutorial ini.

Setelah bahasa Ruby terpasang dengan benar, Anda sekarang dapat menginstal perpustakaannya. Ruby, sama seperti Go dan Node, memiliki manajer paket untuk menginstal perpustakaan pihak ketiga. Di terminal, ketik berikut ini:

Ini menginstal perpustakaan Sinatra, Ruby Handlebars, Kramdown, dan Slim. Sinatra adalah framework aplikasi web. Ruby Handlebars menerapkan mesin template Handlebars di Ruby. Kramdown adalah konverter Markdown ke HTML. Slim adalah perpustakaan bekerja mirip Jade, namun tidak mencakup definisi makro Jade. Oleh karena itu, makro yang digunakan dalam indeks posting Berita dan Blog sekarang adalah Jade normal.

Membuat File rubyPress.rb

Di direktori teratas, buat file rubyPress.rb dan tambahkan kode berikut. Saya akan berkomentar tentang setiap bagian saat ditambahkan ke file.

Hal pertama yang harus dilakukan adalah memuat perpustakaannya. Berbeda dengan Node.js, ini tidak dimasukkan ke dalam variabel. Perpustakaan Ruby menambahkan fungsinya ke lingkup program.

Perpustakaan Handlebars diinisialisasi dengan fungsi pembantu yang berbeda. Fungsi pembantu yang didefinisikan adalah date, cdate, dan save.

Fungsi helper date mengambil tanggal dan waktu sekarang, dan memformatnya sesuai dengan format string yang dikirimkan ke helper. cdate adalah mirip kecuali mengirimkan tanggal dahulu. Helper save memungkinkan Anda untuk menentukan name dan value. Ini menciptakan helper baru dengan nama name dan mengembalikan value-nya. Ini memungkinkan Anda untuk membuat variabel yang ditentukan sekali dan mempengaruhi banyak lokasi. Fungsi ini juga mengambil versi Go, yang mengharapkan sebuah string dengan name, '|' sebagai pemisah, dan value.

Bagian selanjutnya dari kode ini adalah untuk memuat item yang dapat disimpan dalam cache dari situs web. Ini adalah segalanya dalam gaya dan tata letak tema Anda, dan item di sub-direktori parts. Variabel global, $parts, pertama kali dimuat dari file server.json. Informasi itu kemudian digunakan untuk memuat item yang tepat untuk tata letak dan tema yang ditentukan. Mesin template Handlebars menggunakan informasi ini untuk mengisi template.

Bagian selanjutnya berisi definisi untuk semua rute. Sinatra adalah server yang sesuai REST yang lengkap. Tapi untuk CMS ini, saya hanya akan menggunakan kata kerja get. Setiap rute mengambil item dari rute yang akan dikirimkan ke fungsi untuk menghasilkan halaman yang benar. Di Sinatra, sebuah nama yang didahului oleh sebuah kolon yang menentukan bagian dari rute yang akan dikirmkan ke handler rute. Item ini ada dalam tabel hash params.

Fungsi page mendapatkan nama halaman dari rute dan mengirimkan tata letak di variabel $parts bersamaan dengan path lengkap ke file halaman yang dibutuhkan untuk fungsi processPage. Fungsi processPage mengambil informasi ini dan membuat halaman yang tepat, yang kemudian dikembalikan. Di Ruby, keluaran dari fungsi terakhir adalah nilai kembalian untuk fungsinya.

Fungsi post sama seperti fungsi page, kecuali berfungsi untuk semua halaman berjenis posting. Fungsi ini mengharapkan type posting, category posting, dan post itu sendiri. Ini akan membuat alamat untuk menampilkan halaman yang benar.

Fungsi figurePage menggunakan fungsi processPage untuk membaca konten halaman dari sistem file. Fungsi ini menerima path lengkap ke file tanpa ekstensi. figurePage kemudian menguji untuk file dengan nama yang diberikan dengan ekstensi html untuk membaca file HTML. Pilihan kedua adalah untuk ekstensi md untuk file Markdown.

Terakhir, ia memeriksa ekstensi amber untuk file Jade. Ingat: Amber adalah nama perpustakaan untuk memproses file sintaks Jade di Go. Saya menyimpannya sama untuk antar-fungsionalitas. File HTML dikirimkan kembali, sementara semua file Markdown dan Jade dikonversi ke HTML sebelum dikembalikan.

Jika file tidak ditemukan, pengguna akan menerima halaman 404. Dengan cara ini, halaman "page not found" Anda terlihat seperti halaman lain kecuali isinya.

Fungsi processPage melakukan semua perluasan template pada data halaman. Dimulai dengan memanggil fungsi figurePage untuk mendapatkan isi halaman. Kemudian memproses tata letak diteruskan ke sana dengan Handlebars untuk memperluas template.

Kemudian fungsi processShortCode akan menemukan dan memproses semua shortcode di halaman. Hasilnya kemudian diteruskan ke Handlebars untuk kedua kalinya untuk memproses macro yang ditinggalkan oleh shortcode. Pengguna menerima hasil akhirnya.

Fungsi processShortCodes mengambil teks yang diberikan, menemukan masing-masing shortcode, dan menjalankan shortcode yang ditentukan dengan argumen dan isi shortcode. Saya menggunakan shortcode routine untuk memproses isi shortcode juga.

Shortcode adalah tag mirip HTML yang menggunakan -[ dan ]- untuk membatasi tag pembuka dan tag penutup -[/ dan ]-. Tag pembuka berisi parameter untuk shortcode juga. Oleh karena itu, contoh shortcode adalah:

Shortcode ini mendefinisikan shortcode box tanpa parameter dengan isi <p>This is inside a box.</p>. Shortcode box membungkus isinya dalam HTML yang sesuai untuk menghasilkan kotak di sekitar teks dengan teks yang terpusat di dalam kotak. Jika nanti Anda ingin mengubah bagaimana box itu di-render, Anda hanya perlu mengubah definisi shortcode. Ini menghemat banyak pekerjaan.

Hal terakhir dalam file adalah tabel hash $shortcodes yang berisi rutinitas shortcode. Ini adalah shortcode sederhana, tapi Anda bisa membuat shortcode lain menjadi serumit yang Anda inginkan.

Semua shortcode harus menerima dua parameter: args and contents. String ini berisi parameter shortcode dan isi shortcode-nya. Karena shortcode berada di dalam tabel hash, saya menggunakan fungsi lambda untuk mendefinisikannya. Fungsi lambda adalah fungsi tanpa nama. Satu-satunya cara untuk menjalankan fungsi ini adalah dari array hash.

Menjalankan Server

Setelah Anda membuat file rubyPress.rb dengan isi di atas, Anda dapat menjalankan server dengan:

Karena kerangka Sinatra bekerja dengan struktur Ruby on Rails Rack, Anda dapat menggunakan Pow untuk menjalankan server. Pow akan menyiapkan file host sistem Anda untuk menjalankan server Anda secara lokal seperti pada situs host. Anda bisa menginstal Pow with Powder menggunakan perintah berikut di baris perintah:

Powder adalah rutin baris perintah untuk mengelola situs Pow di komputer Anda. Agar Pow bisa melihat situs Anda, Anda harus membuat soft link ke direktori proyek Anda di direktori ~/.pow. Jika server berada di direktori /Users/test/Documents/rubyPress, Anda akan menjalankan perintah berikut:

Ln -s membuat soft link ke direktori yang ditentukan terlebih dahulu, dengan nama yang ditentukan kedua. Pow kemudian akan membuat domain di sistem Anda dengan nama soft link. Pada contoh di atas, masuk ke situs web http://rubyPress.dev di browser akan memuat halaman dari server.

Untuk memulai server, ketik berikut ini setelah membuat soft link:

Untuk memuat ulang server setelah membuat beberapa perubahan kode, ketik berikut ini:

rubyPress Main PagerubyPress Main PagerubyPress Main Page
Halaman Utama rubyPress

Halaman Utaman rubyPressPergi ke situs web di browser akan menghasilkan gambar di atas. Pow akan membuat situs di http://rubyPress.dev. Tidak peduli metode mana yang Anda gunakan untuk meluncurkan situs ini, Anda akan melihat halaman hasil yang sama.

Kesimpulan

Nah, Anda sudah melakukannya. CMS lainnya, tapi kali ini di Ruby. Versi ini adalah versi terpendek dari semua CMS yang dibuat dalam seri ini. Bereksperimenlah dengan kode dan lihat bagaimana Anda dapat memperluas kerangka dasar ini.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.